Изменение расширений файлов для всех файлов в каталоге OSX



У меня есть каталог с кучей файлов с одним расширением (.txt в этом случае), который я хочу автоматически конвертировать в другое расширение (. md).



есть ли простой терминал one liner, который я могу использовать для преобразования всех файлов в этом каталоге в другое расширение файла?



или мне нужно написать скрипт с регулярным выражением?

638   9  

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 или date etc. Все, что работает в оболочке 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

    Ничего не найдено.