파일 목록에 확장자를 추가하는 Perl 방법을 결정하려고 합니다. 이미 특정 확장자를 가진 파일 목록의 이름을 다른 확장자로 바꿀 수 있지만 이미 확장자가 있는지 여부에 관계없이 모든 파일 이름으로 이 작업을 수행할 수 있어야 합니다.
예를 들어 다음과 같은 파일 목록이 있습니다.
file1
file2
file3
ps.dir
나는 그것들의 이름을 모두 다음과 같이 바꾸고 싶습니다 filename.extension
:
file1.bad
file2.bad
file3.bad
ps.dir.bad
답변1
쉘에 rename
Perl이 설치되어 있는 경우(때때로 라고 함 prename
):
rename -v 's/$/.bad/' *
파일이 너무 많고 쉘 *
글롭이 이를 모두 처리할 수 없는 경우 find
다음과 같이 혼합하여 일치시킬 수 있습니다(또는 +
필요한 경우 다음으로 교체).\;
find . -maxdepth 1 -exec rename -v 's/$/.bad/' {} +
Perl의 경우 move
표준 모듈에서 사용하세요.
use File::Copy;
for (<*>) { move($_, "$_.bad"); }
답변2
파일 이름에 공백이 없다고 가정합니다.
for file in *; do mv "${file}" "${file}.bad"; done
답변3
[ ! . -sf / ] &&
mkdir ../bad &&
pax -rwls/$/.bad/ . ../bad
.
그러면 하드 링크 미러가 생성됩니다 ../bad
. 루트가 있는 각 파일 .
도 그곳에서 찾을 수 있지만 ../bad
이름에 .bad
. 새 트리가 요구 사항을 충족하는 경우 현재 트리와 그 위의 트리를 삭제합니다 mv
.../bad