Я пытаюсь массово изменить некоторые файлы в 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
Я что-то обдумывал?
Итак, если вы просто хотите удалить окончание !ut.!ut
, я бы предложил что-то вроде этого:
for file in `find ...`; do
mv "$file" "${file%.\!ut.\!ut}"
done
В этом случае оболочка выполняет свою работу и удаляет окончание. Эта функция называется параметром расширения .