Linux에서 이름 바꾸기 명령을 사용하는 방법

Linux 세계의 파일 이름 변경 강국을 파악하고 mv와 자신에게 휴식을 주십시오. 이름 바꾸기는 유연하고 빠르며 때로는 더 쉽습니다. 다음은 이 강력한 명령에 대한 자습서입니다.

mv에 무슨 일이?

mv 에는 아무런 문제가 없습니다. 명령은 좋은 직업, 모든 Linux 배포판, macOS 및 기타 Unix 계열 운영 체제에서 찾을 수 있습니다. 그래서 항상 사용할 수 있습니다. 그러나 때로는 삽이 아니라 불도저가 필요할 때가 있습니다.

mv 명령은 삶의 목적을 가지고 있으며, 그것은 파일을 이동하는 것입니다. 기존 파일을 새 이름으로 새 파일로 이동하는 데 사용할 수 있다는 것은 행복한 부작용입니다. 순 효과는 파일의 이름을 바꾸는 것이므로 원하는 것을 얻습니다. 그러나 mv는 전용 파일 이름 바꾸기 도구가 아닙니다.

mv로 단일 파일 이름 바꾸기

mv를 사용하여 파일 형식의 이름을 바꾸려면 mv, 공백, 파일 이름, 공백 및 파일에 원하는 새 이름을 지정합니다. 그런 다음 Enter 키를 누릅니다.

ls를 사용하여 파일 이름이 변경되었는지 확인할 수 있습니다.

mv oldfile.txt newfile.txt
ls *.txt

mv로 여러 파일 이름 바꾸기

여러 파일의 이름을 바꾸려는 경우 상황이 더 까다로워집니다. mv에는 여러 파일의 이름을 바꾸는 기능이 없습니다. 멋진 Bash 트릭을 사용해야 합니다. 중급 명령줄 fu를 알고 있으면 괜찮지만 mv를 사용하여 여러 파일의 이름을 바꾸는 복잡성은 mv를 사용하여 단일 파일의 이름을 바꾸는 용이성과 극명한 대조를 이룹니다.

상황이 빠르게 확대됩니다.

다양한 유형의 다양한 파일이 있는 디렉토리가 있다고 가정해 보겠습니다. 이러한 파일 중 일부에는 “.prog” 확장자가 있습니다. “.prg” 확장자를 갖도록 명령줄에서 이름을 바꾸려고 합니다.

어떻게 mv를 랭글링하여 우리를 위해 그렇게 할 수 있습니까? 파일을 살펴보겠습니다.

ls *.prog -l

실제 Bash 스크립트 파일을 작성하지 않는 한 가지 방법이 있습니다.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

f의 경우 *.prog;  mv를 하다 --

효과가 있었나요? 파일을 확인하고 봅시다.

ls *.pr*

예, 효과가 있었습니다. 지금은 모두 “.prg” 파일이고 디렉토리에 “.prog” 파일이 없습니다.

  미니 LED TV란 무엇이며 왜 원하는가?

방금 무슨 일이?

그 긴 명령은 실제로 무엇을 했습니까? 분해해 봅시다.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

첫 번째 부분은 디렉터리의 각 “.prog” 파일을 차례로 처리할 루프를 시작합니다.

다음 부분은 처리가 수행할 작업을 말합니다. mv를 사용하여 각 파일을 새 파일로 이동합니다. 새 파일의 이름은 “.prog” 부분을 제외한 원본 파일 이름으로 지정됩니다. “.prg”의 새로운 확장자가 대신 사용됩니다.

더 간단한 방법이 있어야 합니다

가장 확실합니다. 이름 바꾸기 명령입니다.

이름 바꾸기는 표준 Linux 배포판의 일부가 아니므로 설치해야 합니다. 또한 Linux 제품군마다 이름이 다르지만 모두 동일한 방식으로 작동합니다. 사용 중인 Linux 버전에 따라 적절한 명령 이름으로 대체하면 됩니다.

Ubuntu 및 Debian 파생 배포판에서는 다음과 같이 이름을 바꿉니다.

sudo apt-get install rename

Fedora 및 RedHat 파생 배포판에서는 이와 같이 prename을 설치합니다. Perl을 나타내는 초기 “p”에 유의하십시오.

sudo dnf install prename

Manjaro Linux에 설치하려면 다음 명령을 사용하십시오. 이름 바꾸기 명령은 perl-rename이라고 합니다.

sudo pacman -Syu perl-rename

다시 해보자

그리고 이번에는 이름 바꾸기를 사용할 것입니다. 우리는 “.prog” 파일 세트를 갖도록 시계를 롤백할 것입니다.

ls *.prog

이제 다음 명령을 사용하여 이름을 변경해 보겠습니다. 그런 다음 작동 여부를 ls로 확인합니다. Ubuntu 또는 Debian 파생 Linux를 사용하지 않는 경우에는 이름을 Linux에 적합한 명령 이름으로 대체해야 합니다.

rename 's/.prog/.prg/' *.prog
ls *.pr*

그것은 효과가 있었고 이제 모두 “.prg” 파일이고 디렉토리에 “.prog” 파일이 남아 있지 않습니다.

이번에는 무슨 일이?

그 마법을 세 부분으로 나누어 설명하겠습니다.

첫 번째 부분은 명령 이름인 rename(또는 다른 배포판의 경우 prename 또는 perl-rename)입니다.

마지막 부분은 *.prog로 모든 “.prog” 파일에서 작동하도록 이름 바꾸기를 지시합니다.

중간 부분은 각 파일 이름에 대해 수행하려는 작업을 정의합니다. s는 대체를 의미합니다. 첫 번째 용어(.prog)는 이름 바꾸기가 각 파일 이름에서 검색하는 것이고 두 번째 용어(.prg)는 대체될 것입니다.

명령의 중간 부분 또는 중심 표현은 Perl ‘정규식‘ 및 이는 이름 바꾸기 명령에 유연성을 부여하는 것입니다.

파일 이름의 다른 부분 변경

지금까지 파일 이름 확장자를 변경했으므로 파일 이름의 다른 부분을 수정해 보겠습니다.

디렉토리에는 많은 C 소스 코드 파일이 있습니다. 모든 파일 이름에는 “slang_” 접두사가 붙습니다. ls로 확인할 수 있습니다.

ls sl*.c

“slang_”의 모든 항목을 “sl_”로 바꿀 것입니다. 명령 형식은 이미 우리에게 친숙합니다. 검색어, 대체 용어 및 파일 형식만 변경하고 있습니다.

rename 's/slang_/sl_' *.c

이번에는 “.c” 파일을 찾고 “slang_”을 검색합니다. 파일 이름에서 “slang_”이 발견될 때마다 “sl_”로 대체됩니다.

  iPhone에서 즐겨찾기에 연락처를 추가하는 방법

동일한 매개변수를 사용하여 위에서 ls 명령을 반복하여 해당 명령의 결과를 확인할 수 있습니다.

ls sl*.c

파일 이름의 일부 삭제

검색어를 아무 것도 사용하지 않고 대체하여 파일 이름의 일부를 제거할 수 있습니다.

ls *.c
rename 's/sl_//' *.c
ls *.c

ls 명령에서 “.c” 파일에 모두 “sl_”이 추가된 것을 볼 수 있습니다. 아예 없애자.

이름 바꾸기 명령은 이전과 동일한 형식을 따릅니다. 우리는 “.c” 파일을 찾을 것입니다. 검색어는 “sl_”이지만 대체 용어가 없습니다. 사이에 아무 것도 없는 두 개의 백슬래시는 빈 문자열을 의미하지 않습니다.

이름 바꾸기는 각 “.c” 파일을 차례로 처리합니다. 파일 이름에서 “sl_”을 검색합니다. 발견되면 아무것도 대체되지 않습니다. 즉, 검색어가 삭제됩니다.

ls 명령을 두 번째로 사용하면 모든 “.c” 파일에서 “sl_” 접두사가 제거되었음을 확인합니다.

파일 이름의 특정 부분에 대한 변경 제한

ls를 사용하여 파일 이름에 “param” 문자열이 있는 파일을 살펴보겠습니다. 그런 다음 이름 바꾸기를 사용하여 해당 문자열을 “매개변수” 문자열로 바꿉니다. 이름 바꾸기 명령이 해당 파일에 미친 영향을 확인하기 위해 ls를 다시 한 번 사용할 것입니다.

ls *param*
rename 's/param/parameter' *.c
ls *param*

파일 이름에 “param”이 포함된 4개의 파일이 발견되었습니다. param.c, param_one.c 및 param_two.c는 모두 이름 시작 부분에 “param”이 있습니다. third_param.c는 확장자 바로 앞의 이름 끝에 “param”이 있습니다.

이름 바꾸기 명령은 파일 이름의 모든 곳에서 “매개변수”를 검색하고 모든 경우에 “매개변수”로 바꿉니다.

ls 명령의 두 번째 사용은 그것이 정확히 일어난 일임을 보여줍니다. “param”이 파일 이름의 시작 또는 끝에 있었는지 여부는 “parameter”로 대체되었습니다.

Perl의 메타 문자를 사용하여 중간 표현식의 동작을 개선할 수 있습니다. 메타 문자는 문자의 위치 또는 시퀀스를 나타내는 기호입니다. 예를 들어 ^는 “문자열의 시작”을 의미하고 $는 “문자열의 끝”을 의미하며 . 개행 문자를 제외한 모든 단일 문자를 의미합니다.

검색을 파일 이름의 시작 부분으로 제한하기 위해 문자열 메타 문자의 시작( ^ )을 사용할 것입니다.

ls *param*.c
rename 's/^parameter/value/' *.c
ls *param*.c
ls value*.c

앞에서 이름을 바꾼 파일이 나열되며 “parameter” 문자열이 세 파일 이름의 시작 부분에 있고 파일 이름 중 하나의 끝에 있는 것을 볼 수 있습니다.

  자녀를 위해 Mac을 설정하는 방법

이름 바꾸기 명령은 검색어 “매개변수” 앞에 줄 시작(^) 메타 문자를 사용합니다. 이것은 검색 용어가 파일 이름의 시작 부분에 있는 경우에만 검색된 것으로 간주하도록 이름 바꾸기에 지시합니다. 검색 문자열 “매개변수”가 파일 이름의 다른 곳에 있으면 무시됩니다.

ls로 확인하면 파일 이름 끝에 “매개변수”가 있던 파일 이름이 수정되지 않았지만 이름 시작 부분에 “매개변수”가 있었던 세 개의 파일 이름에서 검색 문자열이 대체 항목으로 대체되었음을 알 수 있습니다. “가치”라는 용어.

이름 바꾸기의 힘은 Perl의 힘에 있습니다. 모든 펄의 힘 귀하의 처분에 있습니다.

그룹으로 검색하기

이름 바꾸기에는 아직 더 많은 트릭이 있습니다. 이름에 비슷한 문자열이 있는 파일이 있는 경우를 생각해 보겠습니다. 그것들은 정확히 같은 문자열이 아니므로 여기에서는 간단한 검색 및 대체가 작동하지 않습니다.

이 예에서 ls를 사용하여 “str”로 시작하는 파일이 있는지 확인합니다. string.c와 strangle.c의 두 가지가 있습니다. 그룹화라는 기술을 사용하여 한 번에 두 문자열의 이름을 바꿀 수 있습니다.

이 이름 바꾸기 명령의 중심 표현은 파일 이름 내에서 문자 시퀀스 “stri” 또는 “stra”가 있는 문자열을 검색하며 이러한 시퀀스 뒤에 바로 “ng”가 옵니다. 즉, 우리의 검색어는 “string”과 “strang”을 찾을 것입니다. 대체 용어는 “뱅”입니다.

ls str*.c
rename 's/(stri|stra)ng/bang/' *.c
ls ban*.c

ls를 두 번째로 사용하면 string.c가 bang.c가 되고 strangle.c가 이제 bangle.c가 되었음을 확인합니다.

이름 바꾸기와 함께 번역 사용

이름 바꾸기 명령은 번역이라는 파일 이름에 대해 작업을 수행할 수 있습니다. 번역의 간단한 예는 파일 이름 세트를 대문자로 강제하는 것입니다.

아래의 이름 바꾸기 명령에서 중앙 표현을 시작하기 위해 s/를 사용하지 않고 y/를 사용하고 있음을 주목하십시오. 이것은 우리가 대체를 수행하지 않는다는 이름 변경을 알려줍니다. 번역을 수행하고 있습니다.

az 용어는 a에서 z까지 시퀀스의 모든 소문자를 의미하는 Perl 표현식입니다. 마찬가지로 AZ 용어는 A에서 Z까지의 순서로 모든 대문자를 나타냅니다.

이 명령의 중심 표현은 “파일 이름에서 a에서 z까지 소문자가 발견되면 A에서 Z까지의 대문자 시퀀스에서 해당 문자로 바꾸십시오.”로 바꾸어 말할 수 있습니다.

모든 “.prg” 파일의 파일 이름을 강제로 대문자로 만들려면 다음 명령을 사용하십시오.

이름 바꾸기 ‘y/az/AZ/’ *.prg

ls *.PRG

ls 명령은 모든 “.prg” 파일 이름이 이제 대문자임을 보여줍니다. 사실 엄밀히 말하면 더 이상 “.prg” 파일이 아닙니다. “.PRG” 파일입니다. Linux는 대소문자를 구분합니다.

중앙 표현식에서 az 및 AZ 항의 위치를 ​​반대로 하여 마지막 명령을 역전시킬 수 있습니다.

이름 바꾸기 ‘y/AZ/az/’ *.PRG

ls *.prg

당신은 5분 안에 Perl을 배우지 못한다

Perl을 이해하는 데 많은 시간을 할애했습니다. 그러나 이름 바꾸기 명령의 시간 절약 기능을 사용하기 시작하려면 성능, 단순성 및 시간 면에서 큰 이점을 얻기 위해 많은 Perl 지식이 전혀 필요하지 않습니다.