파일 이름의 문자 집합을 바꾸는 방법을 알고 있습니다. 예를 들어
for i in *example_text* ;
do
mv "$i" "`echo $i | sed 's/example_text//'`"
done
파일 이름의 일부가 ";"인 경우 어떻게 해야 합니까? (따옴표 사이). 실행하려고 할 때마다 오류가 발생합니다.
for i in *;* ;
do
mv "$i" "`echo $i | sed 's/;//'`"
done
어떤 팁이 있나요?
답변1
mv
루프에서 사용할 수 있지만 대신 Perl을 사용하는 것이 좋습니다 ( 운영 체제에 따라 또는 rename
로 설치될 수 있음 ). 이는 귀하의 목적에 맞게 특별히 설계된 도구이며 귀하의 시스템에 이미 설치되어 있을 가능성이 높습니다.perl-rename
prename
rename 's/;//g' ./*
이제
테스트 실행이 수행할 작업을 먼저 검토할 수 있습니다.rename -v -n 's/;//g' ./*
답변2
쉘의 특수 문자인 세미콜론을 피하십시오.
for i in *\;*
# or
for i in *';'*
를 사용하면 bash
인수 확장이 쉘보다 훨씬 빠릅니다 sed
.
for f in *';'* ; do
mv -- "$f" "${f//;/}"
done
파일이 이미 존재하는 경우 덮어쓸 수 있습니다. 사용하거나 mv -n
존재하는지 확인하십시오 test -e
.