Как запустить команду dos2unix для файлов внутри нескольких папок и подпапок?

Я хочу запустить команду dos2unix для всех файлов внутри папки. Проблема здесь в том, что папка содержит файлы и подпапки. Подпапка снова содержит файлы и папки. Поэтому, если я просто запущу user/bin/dos2unix <folder>, он выдаст ошибку, поскольку в основной папке есть подпапки и папки.

Любая идея о том, как я могу обойти это, чтобы команда dos2unix запускалась для файлов внутри каждой из папок?


person Ban Midou    schedule 05.03.2018    source источник
comment
что ты пробовал? пробовали ли вы команду: for i in `find -type f .`   -  person developer    schedule 05.03.2018


Ответы (3)


просто запустите приведенную ниже команду из того места, где вы хотите выполнить команду dos2unix. Измените приведенное ниже "*.txt" в соответствии с вашим типом расширения файла. Если они разные в другом месте каталога, сделайте это "*.*"

find . -name "*.txt" | xargs dos2unix

Здесь . — ваш текущий каталог и "*.txt" are all yourфайлов dos.

Как будет работать приведенная выше команда? Он найдет все dos файлы *.txt и введет каждый file в качестве параметра в команду dos2unix, которая преобразует этот файл формата dos в формат unix.

Если вы хотите запустить его из любого места, просто укажите полный путь вместо ., как показано ниже:

find /path/from/where/you/want/to -name "*.txt" | xargs dos2unix
person Abhijit Pritam Dutta    schedule 05.03.2018

find <folder> -type f | xargs dos2unix

Пояснение:

  • find <folder> -type f выведет список всех обычных файлов внутри <folder> и его подпапок.
  • xargs dos2unix применит команду dos2unix к каждому файлу, найденному find.
person Ronan Boiteau    schedule 05.03.2018

xargs здесь не нужен; просто используйте первичный -exec для find:

find -type f -exec dos2unix {} +
person chepner    schedule 05.03.2018