
확장자에 공백과 원하지 않는 끝이 있는 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
이 경우 쉘은 작업을 수행하고 엔딩을 제거합니다. 이 기능을매개변수 확장.