sed를 임시 변수에 전달하기

sed를 임시 변수에 전달하기

확장자에 공백과 원하지 않는 끝이 있는 bash의 일부 파일을 대량으로 변경하려고 합니다.

예를 들어

abc.pdf.!ut.!ut

에게

abc.pdf

실제로 해야 할 것보다 더 어려운 일을 했을 경우를 대비하여 전체 진행 상황을 보여 드리겠습니다. 그래서 처음에는 이런 것부터 시작했어요.

for file in `find /Users/phwd/Desktop/Film\ Sheet\ Music\ Scores\ 2  *.\!ut.\!ut`;
do
 mv $file `echo $file | sed 's/\(.*\)\.\!\ut\.\!\ut/\1/'`;
done

mv를 보낼 때 위의 내용이 공백에 대해 작동하지 않아서 이렇게 변경했습니다.

find /Users/phwd/Desktop/Film\ Sheet\ Music\ Scores\ 2  *.\!ut.\!ut | while read file
do 
    mv $file `echo $file | sed 's/\(.*\)\.\!\ut\.\!\ut/\1/'`;
done

이것은 거의 작동했지만 mv는 임의의 메시지를 말하기 시작했습니다.

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory

내가 뭔가 생각을 끝냈나?

답변1

따라서 결말을 제거하고 싶다면 !ut.!ut다음과 같은 것을 제안합니다.

for file in `find ...`; do
  mv "$file" "${file%.\!ut.\!ut}"
done

이 경우 쉘은 작업을 수행하고 엔딩을 제거합니다. 이 기능을매개변수 확장.

관련 정보