mv 해당 파일이나 디렉터리가 없나요? 여러 디렉터리의 파일 이름 바꾸기

mv 해당 파일이나 디렉터리가 없나요? 여러 디렉터리의 파일 이름 바꾸기

이는 부분적으로 BASH에 대한 나의 지식이 매우 피상적이기 때문입니다.

스크립트는 다음과 같습니다.

eighteen=(2018*/*)
newe=`echo "$eighteen" | sed -e 's/\(-\)*$//g'`

while read f <&3 && read nf <&4; do     
    mv -v "${f}" "${nf}"
    break
done 3<"$eighteen" 4<"$newe"

-여러 하위 폴더의 모든 파일 이름 끝에 있는 기호를 작성하고 제거한 잘못된 스크립트를 만회하려고 합니다 .

내가 얻는 오류는 다음과 같습니다../cleanup.sh: line 16: 2018-08-13/untitled-102.arw: No such file or directory

mv오류가 줄에서 발생하는 것이 아니라 다음에서 발생한다는 점은 주목할 가치가 있습니다 done 3<"$eighteen" 4<"$newe".

StackExchange의 답변에서 while 루프를 복사했습니다. 패스트푸드는 소화에 좋지 않은 경우가 많아 빠른 해결이 가능합니다. 이해를 돕기 위해 양해해 주시기 바랍니다. 이전에 언급한 대체를 호출하는 방법 4<"$newe" nf <&4과 자세한 내용을 알아보려면 어떻게 검색해야 하는지 힌트를 주세요 . while진술의 맥락 외부에 적용됩니까 ?

답변1

적절한 도구를 사용하여 정규 표현식을 보존할 수 있는 간단한 결함이 있는 쉘 스크립트를 사용하고 있는 것 같습니다.

rename -n 's/-*$//' 2018*/*

-n실제로 이름을 바꿀 수 있을 만큼 출력이 좋아지면 스위치를 제거합니다.

남자 이름 바꾸기

경고하다 이 작업을 수행할 수도 있고 수행하지 못할 수도 있는 같은 이름의 다른 도구가 있으므로 주의하세요.

패키지의 일부인 이름 바꾸기 명령은 util-linux그렇지 않습니다.

다음 명령을 실행하면:

$ rename

보시 perlexpr다시피, 이것이 올바른 도구인 것 같습니다 =)

그렇지 않은 경우 이를 기본값으로 설정하고(일반적으로 이미 적용되어 있음) Debian다음과 같이 파생시킵니다 Ubuntu.

$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename

아치리눅스의 경우:

pacman -S perl-rename

RedHat 시리즈 배포판의 경우:

yum install prename

'prename' 패키지는 다음 위치에 있습니다.에펠저장소.


젠투의 경우:

emerge dev-perl/rename

*BSD의 경우:

pkg install gprename

또는p5-File-Rename


Mac 사용자의 경우:

brew install rename

다른 배포판에 이 명령이 없으면 패키지 관리자를 검색하여 설치하거나수동으로 수행(학과가 없어요...)


이 도구는 원래 Perl의 아버지인 Larry Wall이 작성했습니다.

관련 정보