Есть ли способ применить dos2unixкоманду, чтобы она работала со всеми файлами в папке и ее подпапках?
man dos2unixне показывает какие-либо -rили похожие варианты, которые сделали бы это прямо вперед?
Есть ли способ применить dos2unixкоманду, чтобы она работала со всеми файлами в папке и ее подпапках?
man dos2unixне показывает какие-либо -rили похожие варианты, которые сделали бы это прямо вперед?
Ответы:
Пропуск двоичных файлов и скрытых файлов был важен для меня:
Этот работал хорошо для меня:
find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k
Что означает: найти все не скрытые файлы рекурсивно в текущем каталоге, затем с помощью grep перечислить все недвоичные (-I) непустые файлы, а затем передать их в файл xargs (разделенный символом новой строки) по одному файлу за раз dos2unix и сохраните оригинальную временную метку.
Смотрите также:
Вы можете использовать find, чтобы найти все файлы в структуре каталогов, которые вы хотите запустить с помощью команды dos2unix.
find /path/to/the/files -type f -exec dos2unix {} \;
Посмотрите справочные страницы для поиска, есть много опций, которые вы можете использовать, чтобы указать, что оценивается
Используйте подстановочный знак. Как это: (если вы находитесь в папке)
dos2unix *
или если вы находитесь вне папки, выполните:
dos2unix /path/to/folder/*
Использование bash:
shopt -s globstar
dos2unix **
Опция globstarоболочки bashпозволяет использовать **глобус. Это работает точно так же, *но совпадает /в путевых именах (следовательно, совпадающие имена в подкаталогах тоже). Это будет работать в каталоге, содержащем умеренное количество файлов в его подкаталогах (не много тысяч).
В zshи yashоболочки (с set -o extended-globв yash), вы бы сделать
dos2unix **/*
dos2unixпо умолчанию файлы пропускаются.