Как рекурсивно применить dos2unix ко всему содержимому папки?


11

Есть ли способ применить dos2unixкоманду, чтобы она работала со всеми файлами в папке и ее подпапках? man dos2unixне показывает какие-либо -rили похожие варианты, которые сделали бы это прямо вперед?

Ответы:



3

Пропуск двоичных файлов и скрытых файлов был важен для меня:

Этот работал хорошо для меня:

find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k

Что означает: найти все не скрытые файлы рекурсивно в текущем каталоге, затем с помощью grep перечислить все недвоичные (-I) непустые файлы, а затем передать их в файл xargs (разделенный символом новой строки) по одному файлу за раз dos2unix и сохраните оригинальную временную метку.

Смотрите также:

https://github.com/mdolidon/endlines


2

Вы можете использовать find, чтобы найти все файлы в структуре каталогов, которые вы хотите запустить с помощью команды dos2unix.

find /path/to/the/files -type f -exec dos2unix {} \;

Посмотрите справочные страницы для поиска, есть много опций, которые вы можете использовать, чтобы указать, что оценивается


Это не сработало.
Алекс Кинман

2
Будьте ОЧЕНЬ осторожны при выполнении этого, если в дереве файлов есть каталог .git ... он повредил мой локальный репозиторий git.
Aaron_H

1

Используйте подстановочный знак. Как это: (если вы находитесь в папке)

dos2unix *

или если вы находитесь вне папки, выполните:

dos2unix /path/to/folder/*

1

Использование bash:

shopt -s globstar
dos2unix **

Опция globstarоболочки bashпозволяет использовать **глобус. Это работает точно так же, *но совпадает /в путевых именах (следовательно, совпадающие имена в подкаталогах тоже). Это будет работать в каталоге, содержащем умеренное количество файлов в его подкаталогах (не много тысяч).

В zshи yashоболочки (с set -o extended-globв yash), вы бы сделать

dos2unix **/*
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.