Windows에서 파일의 이름을 빠르게 바꾸는 방법 중 하나는
F2 > Rename > Tab (to next file) > Rename ...
그러나 우분투 / 노틸러스에서는 다음 파일로 이동할 수 없습니다. 그러나 Linux에서는 명령 줄 대안이 있어야한다고 생각합니다.
그러나 때로는 특정 파일의 이름을 바꾸는 방법을 더 많이 제어하고 싶을 수도 있습니다. 이 경우 다음 파일로 탭하는 것이 더 좋습니다.
Windows에서 파일의 이름을 빠르게 바꾸는 방법 중 하나는
F2 > Rename > Tab (to next file) > Rename ...
그러나 우분투 / 노틸러스에서는 다음 파일로 이동할 수 없습니다. 그러나 Linux에서는 명령 줄 대안이 있어야한다고 생각합니다.
그러나 때로는 특정 파일의 이름을 바꾸는 방법을 더 많이 제어하고 싶을 수도 있습니다. 이 경우 다음 파일로 탭하는 것이 더 좋습니다.
답변:
나는 rename
항상 사용 합니다. 꽤 간단하지만 기본 정규식을 알고 있기를 바랍니다.
rename "s/SEARCH/REPLACE/g" *
모든 파일에서 문자열 SEARCH
을 REPLACE
바꿉니다 (즉, *
). /g
당신이 있었다, 그래서 만약 수단 글로벌 SEARCH_SEARCH.jpg
, 그 이름이 변경된다 REPLACE_REPLACE.jpg
. 을 가지고 있지 않다면 /g
대체를 한 번만 수행 했으므로 이제 이름이으로 변경되었습니다 REPLACE_SEARCH.jpg
. 대소 문자를 구분하지 않으려면 추가하십시오 /i
( 끝 /gi
또는 /ig
끝에).
정규식을 사용하면 더 많은 일을 할 수 있습니다.
이 참고 rename
는 IS prename
(일명 펄 rename
완전한 펄 정규 표현식을 지원하는) 명령. rename
패턴을 사용하고 강력하지 않은 다른 것이 있습니다 . prename
우분투 (펄과 함께)에 기본적으로 설치되었지만 이제는 다음을 수행해야 할 수도 있습니다.
sudo apt install rename
몇 가지 예는 다음과 같습니다.
추가 :
rename 's/^/MyPrefix_/' *
document.pdf
로 개명 MyPrefix_document.pdf
제거 :
또한 원치 않는 문자열을 제거 할 수 있습니다. 이름이 같은 MP3 파일이 20 개 있는데 CD RIP 01 Song.mp3
"CD RIP"부분을 제거하고 하나의 명령으로 모든 파일에서 해당 파일 을 제거하려고한다고 가정합니다.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
에 01 Song.mp3
공백이 '^CD RIP '
없으면 모든 파일에 공백이 파일의 첫 문자가됩니다. 또한 ^
문자 없이 작동 하지만 CD RIP
파일 이름의 모든 부분에서 일치 합니다. ^
가 파일의 시작 부분이 있다면 보장 만 문자를 제거합니다.
추가 :
rename 's/$/_MySuffix/' *
document.pdf
로 개명 document.pdf_MySuffix
변경 :
rename 's/\.pdf$/.doc/' *
로 변경 Something.pdf
됩니다 Something.doc
. (백 슬래시의 이유 .
는 정규 표현식의 와일드 카드 문자이므로 .pdf
일치 qPDF
하는 반면 \.pdf
정확한 문자열과 만 일치합니다 .pdf
. BASH에 익숙하지 않은 경우 백 슬래시를 SINGLE 따옴표로 묶어야합니다! 또는 큰 따옴표를 사용 또는 bash 그들을 번역하려고합니다. 비난하기 \.
와 "\."
동일 .
하기 때문이다. (그러나 큰 따옴표와 백 슬래시 예를 들어, 사용하는 "\ n"은 줄 바꿈에 대한,하지만 "\."
유효한 다시 이스케이프 시퀀스 아니라, 그것을 로 번역됨 .
)
실제로 문자열의 일부를 전체 대신 따옴표로 묶을 수도 있습니다. BASH 와 's/Search/Replace/g'
동일 합니다. 특수 문자 (및 공백)에주의해야합니다.s/'Search'/'Replace'/g
s/Search/Replace/g
-n
긍정적이지 않은 경우에는 올바른 정규 표현식을 사용하는 것이 좋습니다 . 이름이 바뀐 이름을 표시 한 후 이름을 바꾸지 않고 종료합니다. 예를 들면 다음과 같습니다.
rename -n s/'One'/'Two'/g *
여기에는 -n
깃발을 넣지 않은 경우의 모든 변경 사항이 나열됩니다 . 좋아 보인다면을 눌러 Up되돌아 가서를 지우고을 -n
누르십시오 Enter(또는 교체하여 -v
변경 사항을 모두 출력하십시오).
참고 : 17.04 이상의 Ubuntu 버전 rename
은 기본적으로 제공 되지 않지만 리포지토리에서 계속 사용할 수 있습니다. 사용 sudo apt install rename
하여 설치
rename
명령 에 대해 알기 전에 이것이 내가 추가 한 일을 기억했다.for f in *; do mv -v "$f" "prependThis$f"; done
(?:\.[0-9]{3})$
패턴에 사용 하면 수동 그룹의 3 자리 파일 확장자와 모두 일치합니다. 예 : rename s/^my_favorite_movie.avi(?:\.[0-9]{3})$/random_movie.avi/ *
. 이 정규식 치트 시트를 살펴보십시오 .
pyrenamer를 사용해보십시오 .
노틸러스와 통합되어 있지 않지만 작업이 완료됩니다. 여기 리뷰가 있습니다.
Thunar (XFCE의 일부)에는 개별적으로 실행할 수있는 이름 바꾸기 기능도 있습니다.
런치 패드에 nautilus-renamer 라는 프로젝트가있는 것 같습니다 . make install
스크립트를 다운로드하고 압축을 풀면 실행하여 설치할 수 있습니다 . 일부 기능이 있거나 일부 프로그래밍을 알고 있다면 파이썬 스크립트 일 뿐이므로 필요에 따라 향상시킬 수 있습니다.
명령 행에서 단일 파일의 이름을 바꾸려면 명령은 다음과 같습니다.
mv file1.txt file2.txt
일괄 적으로 수행하려면 스크립트를 통해 수행해야 할 것입니다. 더 자세한 정보를 제공하면 나 또는 다른 사람이 당신을 대신해서 채찍질 할 수 있습니다. 즉, 파일에 내용을 추가하는 스크립트는 다음과 같습니다.
#!/bin/bash
for file in *
do
# separate the file name from its extension
if [[ $file == *.* ]]; then
ext="${file##*.}"
fname="${file%.*}"
mv "$file" "${fname}_APPENDSTUFFHERE.$ext"
else
mv "$file" "${file}_APPENDSTUFFHERE"
fi
done
정확히 이름을 변경해야하는 방법에 따라, 예를 들어 특정 이름 변경 규칙을 따르는 경우 조정될 수 있습니다. (개인적으로 나는 bash-foo가 그렇게 크지는 않지만 Perl 스크립트를 통해 이것을 할 것입니다.)
이전에 질문 한 내용 과 파일 이름 및 확장자가 분리되어 있습니다.
Windows에서 수행 한 작업과 유사하게 명령 줄없이 수행하려면 tab 키 대신 오른쪽 화살표 키를 사용 하십시오 . 이것은 Windows에서 탭과 마찬가지로 다음 파일을 선택합니다.
실제로 한 번에 많은 파일의 이름을 바꿀 수있는 방법 과 같은 질문은 아닙니다 . 그러나 나는 그 대답에서 제안한 것과 동일한 프로그램을 제안 할 것입니다 : qmv .
qmv는 renameutils 패키지의 편리한 도구입니다. 자주 사용하는 텍스트 편집기를 사용하여 파일 이름을 바꿀 수 있습니다. vim의 힘과 결합하여 뛰어난 이름 변경 유틸리티를 사용할 수 있습니다.
나는 보통 qmv -f do
많은 파일의 이름을 바꾸려는 디렉토리 와 같이 호출 합니다. 또는 재귀 적으로 이름을 바꾸려면 qmv -R -f do
.
여러 파일의 이름을 바꾸어야 할 때마다 항상 qmv (및 vim)로 돌아갑니다.
유일한 적절한 옵션이 파일 이름을 수동으로 바꾸는 vidir
경우 moreutils
패키지 에서 다음을 사용하는 것이 좋습니다 .
sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install moreutils
DESCRIPTION
vidir allows editing of the contents of a directory in a text editor.
If no directory is specified, the current directory is edited.
When editing a directory, each item in the directory will appear on
its own numbered line. These numbers are how vidir keeps track of what
items are changed. Delete lines to remove files from the directory, or
edit filenames to rename files. You can also switch pairs of numbers
to swap filenames.
Note that if "-" is specified as the directory to edit, it reads a
list of filenames from stdin and displays those for editing.
Alternatively, a list of files can be specified on the command line.
현재 작업 디렉토리의 내용 :
.
├── bar
├── baz
└── foo
실행 vidir
하고 이름을 바꾸려는 파일 이름이 포함 된 줄에서 파일 이름을 바꿉니다. CTRL+ O와 CTRL+를 누르십시오 X.
.
├── bar.bak
├── baz.old
└── foo.new
현재 작업 디렉토리의 내용 :
.
├── bar
├── baz
└── foo
현재 작업 디렉토리의 파일 내용 :
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is bar
- baz:
This is baz
- foo:
This is foo
$
를 실행 vidir
하고 전환하려는 파일 이름이 포함 된 줄의 숫자를 전환하십시오. CTRL+ O와 CTRL+를 누르십시오 X.
.
├── bar
├── baz
└── foo
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is foo
- baz:
This is bar
- foo:
This is baz
$
현재 작업 디렉토리의 내용 :
.
├── bar
├── baz
└── foo
실행 vidir
하고 삭제하려는 파일이 포함 된 줄을 제거하십시오. CTRL+ O와 CTRL+를 누르십시오 X.
.
└── baz