서브 디렉토리에서 파일 이름을 어떻게 바꾸려면?
-
05-07-2019 - |
문제
하위 디렉토리에 파일을 바꾸는 방법이 있습니까?
예를 들어:
이름 바꾸기 *.html
에게 *.htm
디렉토리 및 서브 디렉토리가있는 폴더에서.
해결책
Windows 명령 프롬프트 : (배치 파일 내부 인 경우 %x를 %x로 변경합니다 x)
for /r %x in (*.html) do ren "%x" *.htm
이것은 파일의 중간을 바꾸는데도 효과가 있습니다.
for /r %x in (website*.html) do ren "%x" site*.htm
다른 팁
Windows의 경우 이것이 내가 찾은 최고의 도구입니다.
그것은 무엇이든 할 수 있고 부엌 싱크대가 있습니다.
Linux의 경우 이전 답변과 같이 다양한 스크립팅 언어와 쉘이 있습니다.
find . -regex ".*html$" | while read line;
do
A=`basename ${line} | sed 's/html$/htm/g'`;
B=`dirname ${line}`;
mv ${line} "${B}/${A}";
done
파이썬에서
import os
target_dir = "."
for path, dirs, files in os.walk(target_dir):
for file in files:
filename, ext = os.path.splitext(file)
new_file = filename + ".htm"
if ext == '.html':
old_filepath = os.path.join(path, file)
new_filepath = os.path.join(path, new_file)
os.rename(old_filepath, new_filepath)
Bash에서는 다음을 수행 할 수 있습니다.
for x in $(find . -name \*.html); do
mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done
더 우아한 방법이 있다고 확신하지만 여기에 내 머리에 가장 먼저 튀어 나온 것이 있습니다.
for f in $(find . -type f -name '*.html'); do
mv $f $(echo "$f" | sed 's/html$/htm/')
done
Forfiles (Windows XP 및 2003과 함께 제공되고 최신 제품이 포함되어 있음)가 있다면 다음을 수행 할 수 있습니다.
forfiles /s /m *.htm /c "cmd /c ren @file *.html"
Linux에서는 ''를 사용할 수 있습니다.이름 바꾸기'파일 이름을 배치로 바꾸는 명령.
In bash use command rename :)
rename 's/\.htm$/.html/' *.htm
# or
find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/'
#Obs1: Above I use regex \. --> literal '.' and $ --> end of line
#Obs2: Use find -maxdepht 'value' for determine how recursive is
#Obs3: Use -print0 to avoid 'names spaces asdfa' crash!
총 사령관 파일 관리자 앱인 Dir & Sub-Dirs 내의 모든 파일을 나열하고 선택한 다음 전체 사령관 작업을 실행할 수 있습니다. 그중 하나는 다음과 같습니다. 다중 생성 된 파일.
Linux에서 어색합니다. 첫 번째 디렉토리의 경우 이것은 당신의 답입니다 ... 아래 에이 정확한 awk를 작성하는 다른 awk를 쓰면서 Dir_path에서 awk를 재귀 적으로 호출하여 외삽하십시오.
ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
Windows의 경우 a를 만들었습니다 편리한 litte vbscript 솔루션 Regex 기반 이름 변경 및 드래그 앤 드롭 지원. 원하는 경우 시도해보십시오. VBS 파일에 넣고 폴더를 탐색기에 놓으십시오.
창문에서 이름 변경 그것에 대해 꽤 잘한다. 프리웨어이지만 오픈 소스는 아닙니다.
Windows에서는 OpenSource Simple C#을 찾을 수 있습니다. 대량 파일 렌즈 라머 신청서 https://filerenamer.codeplex.com 간단한 상태로 작동합니다 엑셀 파일. 이 응용 프로그램에 두 개의 열 소스와 대상이있는 Excel 파일을 제공하면 완료되었습니다.
유닉스에서는 사용할 수 있습니다 RNM:
rnm -rs '/\.html$/.htm/' -fo -dp -1 *
또는
rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *
설명:
-ns
: 이름 문자열 (새 이름)./n/
확장자없이 파일 이름으로 확장되는 이름 문자열 규칙입니다.-ss
: 검색 문자열 (regex). 일치하는 파일을 검색합니다.-rs
: 양식의 문자열을 교체하십시오/search_regex/replace_part/modifier
-fo
: 파일 전용 모드-dp
: 디렉토리 깊이 (-1은 무제한을 의미).