+1 Это решение работает, даже если у вас есть пробелы в имени файла, но вы имеете в виду «$ f» вместо «f».
Адам Зальцман
Расширение параметров оболочки немного загадочно, вместо этого можно использовать базовое имя: для f в * .JPG; do mv "$ f" "` basename $ f .JPG`.jpg "; сделано
математика
@math: я предпочитаю свою версию, так как она работает с именами файлов, содержащими пробелы, и будет работать с ними /path/to/*.JPG. Вы можете представить свой ответ, конечно :)
Johnsyweb
Конечно, basename удалит ведущие каталоги, но будет работать с пробелами внутри имен файлов. (Я не думаю, что это стоит ответа;) поэтому я разместил его как комментарий)
математика,
10
Если вы можете использовать внешние инструменты (не только bash), проверьте renameкоманду!
Было бы достаточно легко сделать это для файлов с пробелами в имени: просто добавьте двойные кавычки вокруг обоих аргументов mv.
Адам Зальцман
У меня нет пробелов. Что я добавлю, чтобы это произошло в каталоге CURRENT. В настоящий момент я получаю сообщение об ошибке - mv: невозможно указать `* .JPG ': нет такого файла или каталога
Ответы:
Использование расширения параметров оболочки :
Эти
"
символы будут заботиться о именах файлов , содержащих пробелы, так как фотографии часто.источник
/path/to/*.JPG
. Вы можете представить свой ответ, конечно :)Если вы можете использовать внешние инструменты (не только bash), проверьте
rename
команду!Это
rename
частьutil-linux
.источник
perl
которая принимает разные аргументы, чтобы сделать то же самое.Если у вас есть пробелы в именах файлов:
источник
Я бы посоветовал взглянуть на
mmv
команду. Он подходит именно для такого рода задач. В вашем сценарии это будет:Страница man полна примеров, так что вам не нужно время, чтобы привыкнуть к ней.
В системах Debian его можно установить с помощью:
источник
если у вас нет пробелов в именах файлов:
источник
mv
.