У меня есть набор файлов, к которым я хотел бы применить ту же команду, и выходные данные должны содержать то же имя, что и обработанный файл, но с другим расширением.
В настоящее время я занимаюсь переименованием /my/data/Andrew.doc чтобы /my/data/Andrew.txt Я хотел бы сделать это для всех файлов .doc из папки / my / data / и сохранить имя.
Я попробовал несколько версий, но, наверное, у меня что-то не так в синтаксисе, поскольку я новичок в Linux.
Существует по меньшей мере сто тысяч миллионов различных способов приблизиться к этому, но вот главные претенденты:
Цикл Bash for
for f in ./*.doc; do # do some stuff here with "$f" # remember to quote it or spaces may misbehavedone
С помощью find
То find команда имеет прекрасный маленький exec команда, которая отлично подходит для выполнения задач (с некоторыми оговорками). Поиск лучше, чем обычный поиск по глобусу, потому что вы действительно можете отфильтровать файлы, которые вы выбираете. Будьте осторожны со странным синтаксисом.
find . -iname '*.doc' -exec echo "File is {}" \;
Обратите внимание, что find является рекурсивным, поэтому вы можете захотеть использовать -maxdepth 1 хранить find в текущем рабочем каталоге. -type f может использоваться для фильтрации обычных файлов.
Если мы просто переименование doc в txt...
То rename команда похожа на sed при поиске. Очевидно, что это ничего не сделает для преобразования формата.