답변:
Peter van der Heijden 덕분에 공백이있는 파일 이름을 사용할 수 있습니다.
for f in * ; do mv -- "$f" "PRE_$f" ; done
( "-"는 대시로 시작하는 파일로 성공하려면 이름이 mv 명령의 스위치로 해석됩니다)
ls
명령을로 변경하고 *
인수를 큰 따옴표로 묶는 경우 mv
공백이 포함 된 파일에 적용됩니다.
rename
여러 파일 이름 바꾸기를 매우 쉽게 처리하는 데 항상 도움이되었습니다.
파일 (디렉토리)에 접두사 또는 접미사 를 추가 하려면 xargs를 사용하여 간단하고 강력한 방법을 사용할 수 있습니다 .
ls | xargs -I {} mv {} PRE_{}
ls | xargs -I {} mv {} {}_SUF
xargs의 매개 변수 대체 옵션 인 -I를 사용하고 있습니다. 맨 페이지에서 더 자세한 정보를 얻을 수 있습니다.
ls *.old | xargs -I {} mv {} PRE_{}
util-linux를 사용하여 현재 디렉토리의 모든 파일과 폴더에 접두사를 추가하려면 rename
( prename
데비안과 다른 시스템의 perl 변형과 달리) 다음을 수행 할 수 있습니다.
rename '' <prefix> *
이것은 빈 문자열의 첫 번째 항목 (즉시 발견됨)을 찾은 다음 해당 항목을 접두어로 대체 한 다음 나머지 파일 이름을 그 끝에 붙입니다. 끝난.
util-linux
데비안 스트레치에서 이것을 제공하는 것 같습니다 /usr/bin/rename.ul
.
사용할 수있는 간단한 스크립트는 다음과 같습니다. 비표준 모듈 File::chdir
을 사용하여 관리 cd
작업 을 처리하는 것을 좋아 하므로이 스크립트를 그대로 사용하려면 설치해야합니다 ( sudo cpan File::chdir
).
#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
use File::chdir; # allows cd-ing by use of $CWD, much easier but needs CPAN module
die "Usage: $0 dir prefix" unless (@ARGV >= 2);
my ($dir, $pre) = @ARGV;
opendir(my $dir_handle, $dir) or die "Cannot open directory $dir";
my @files = readdir($dir_handle);
close($dir_handle);
$CWD = $dir; # cd to the directory, needs File::chdir
foreach my $file (@files) {
next if ($file =~ /^\.+$/); # avoid folders . and ..
next if ($0 =~ /$file/); # avoid moving this script if it is in the directory
move($file, $pre . $file) or warn "Cannot rename file $file: $!";
}
내 시스템에는 rename
명령 이 없습니다 . 간단한 라이너 하나입니다. 모든 HTML 파일을 재귀 적으로 찾고 prefix_
이름 앞에 추가 합니다.
for f in $(find . -name '*.html'); do mv "$f" "$(dirname "$f")/prefix_$(basename "$f")"; done
find
: 당신은 또한 명령, 루프 필요없이 실행할 수 있습니다 stackoverflow.com/a/33297439/2351568