bash에 포함된 모든 파일 이름에서 ";"를 제거하려면 파일 이름을 바꿉니다.

bash에 포함된 모든 파일 이름에서 ";"를 제거하려면 파일 이름을 바꿉니다.

파일 이름의 문자 집합을 바꾸는 방법을 알고 있습니다. 예를 들어

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-renameprename

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.

관련 정보