Изменение расширений файлов для всех файлов в каталоге OSX
У меня есть каталог с кучей файлов с одним расширением (.txt в этом случае), который я хочу автоматически конвертировать в другое расширение (. md).
есть ли простой терминал one liner, который я могу использовать для преобразования всех файлов в этом каталоге в другое расширение файла?
или мне нужно написать скрипт с регулярным выражением?
9 ответов:
вы могли бы использовать что-то вроде этого:
for old in *.txt; do mv $old `basename $old .txt`.md; doneсначала сделайте копию!
кроме того, вы можете установить
ren(переименовать) коммунальнойbrew install ren ren '*.txt' '#1.md'Если вы хотите переименовать файлы с префиксом или суффиксом в имени файла
ren 'prefix_*.txt' 'prefix_#1.md'
терминал для этого не нужен... Просто выделите все файлы, которые вы хотите переименовать. Щелкните правой кнопкой мыши и выберите " Переименовать # # элементы "и просто введите".txt "в поле" Найти: "и". md" в поле " заменить на:".
предпочтительный Unix способ сделать это (да, OS X основана на Unix):
ls | sed 's/^\(.*\)\.txt$/mv ".txt" ".md"/' | shзачем зацикливаться с
forЕслиlsпо дизайну петли через весь список имен файлов? У тебя есть трубы, используй их. Вы можете создавать / изменять не только вывод с помощью команд, но и команды (правильно, то есть команды, созданные командой, которая является тем, что Брайан Керниган, один из изобретателей Unix, больше всего понравился на Unix), поэтому давайте посмотрим, чтоlsиsedпроизводит путем извлекать трубу кsh:$ ls | sed 's/^\(.*\)\.txt$/mv ".txt" ".md"/' mv "firstfile.txt" "firstfile.md" mv "second file.txt" "second file.md" $как вы можете видеть, это не только один лайнер, но и полный скрипт, который, кроме того, работает, создавая другой скрипт в качестве вывода. Так что давайте просто скормим скрипт, созданный однострочным скриптом
sh, которая составляет the интерпретатор скриптов OS X. Конечно, он работает даже для имен файлов с пробелами в нем.кстати: каждый раз, когда вы вводите что-то в терминал создать сценарий, даже если это только одна команда с одним словом, как
lsилиdateetc. Все, что работает в оболочке Unix, всегда является скриптом / программой, которая является просто некоторым потоком на основе ASCII (в этом случае поток инструкций противоположен потоку данных).чтобы увидеть фактические команды, выполняемые
sh, просто добавьте послеsh, который включает отладку вывода в оболочке, так что вы увидите каждыйmvкоманда выполняется с фактическим аргументы кsedредактор скриптов (да, еще один скрипт внутри скрипта :-) ).однако, если вам нравится сложность, вы даже можете использовать
awkи если вы хотите установить другие программы, чтобы просто сделать основную работу, естьren. Я знаю даже людей, которые предпочли бы написать 50-строкperlскрипт для этой простой ежедневной задачи.возможно, в finder проще переименовывать файлы, но при удаленном подключении к Mac (например, через
ssh), используя поиск вообще невозможен. Вот почему линия cmd по-прежнему очень полезна.
на основе выбранного и наиболее точного ответа выше, вот функция bash для повторного использования:
function change_all_extensions() { for old in *.""; do mv $old `basename $old .""`.""; done }использование:
$ change_all_extensions txt md(Я не мог понять, как получить чистое форматирование кода в комментарии к этому ответу.)
Не нужно писать скрипт для этого просто нажмите эту команду
find ./ -name "*.txt" | xargs -I '{}' basename '{}' | sed 's/\.txt//' | xargs -I '{}' mv '{}.txt' '{}.md'
у меня была похожая проблема, когда файлы были названы
.gifx.gifв конце концов, и это работало в OS X, чтобы удалить последний.gif:for old in *.gifx.gif; do mv $(echo "$old") $(echo "$old" | sed 's/x.gif//'); done
cd $YOUR_DIR ls *.txt > abc mkdir target // say i want to move it to another directory target in this case while read line do file=$(echo $line |awk -F. '{ print }') cp $line target/$file.md // depends if u want to move(mv) or copy(cp) done < abc
для тех из вас, кто не очень хорош в программировании, то вы можете проверить эту статью на wiki how.
он показывает много метод делать это, что не включает в себя кодирование
и вы также можете проверить этот блог на изменение расширений файлов.
Он содержит консольное приложение, которое делает все вещи для вас.
Comments