Просто чтобы добавить другое предложение, даже если оно не использует механизм подстановки оболочки, а вместо этого sed.
find -name '*.mp3' -print |
sed -e 's/\.mp3$//' -e "s/.*/mv '&\.mp3' '&\.txt'/" |
sh
Другими словами, создайте командную строку mv
для каждого имени файлаи передайте результат в sh
.
. Это не удастся, если в каком-либо из файлов есть апостроф (одинарная кавычка) в имени файла.Я в основном публикую это, чтобы противостоять синдрому «если все, что у вас есть, это xargs, то каждая проблема будет выглядеть как гвоздь».
Не у всех seds одинаковый синтаксис.В частности, я не уверен на 100%, что у вас может быть несколько аргументов -e на некоторых старых старых ОС SunOS (ищите XPG-совместимый sed в чем-то вроде /usr/ucb/blah/barf/vomit/xpg4/bin/sed
)