Сценарий оболочки для использования dos2unix в каталогах и подкаталогах для KornShell

dos2unix принимает в качестве аргумента имя файла. Мне нужно сделать его универсальным, чтобы он мог принимать файл или каталоги, а затем рекурсивно искать в каталогах и преобразовывать все файлы в древовидной структуре из dos в Unix. Я использую KornShell (ksh). Пожалуйста помоги

Спасибо.


person ruby    schedule 29.06.2011    source источник
comment
Используйте команду поиска: find path -type f -exec dos2unix {} \;   -  person Prince John Wesley    schedule 29.06.2011
comment
Это не работает для подкаталогов, а также если в основном каталоге есть подкаталоги и некоторые файлы в нем. Например: если у меня есть каталог abc и в нем есть каталоги temp temp1 и файлы t1.txt t2.txt. Тогда эта команда не охватывает все подкаталоги   -  person ruby    schedule 29.06.2011
comment
он работает по крайней мере в bash. вы указали основную директорию вместо path   -  person Prince John Wesley    schedule 29.06.2011
comment
попробуйте вариант -maxdepth. Прочтите man 1 find.   -  person Prince John Wesley    schedule 29.06.2011
comment
Спасибо, Джон. Я прилагаю скрипт для справки. Пожалуйста, убедитесь, что он не работает :(   -  person ruby    schedule 29.06.2011
comment
#! / bin / ksh var = $ 1 for i in cat $var do if [-d $ i]; затем cd $ я нахожу. -name . -maxdepth -exec dos2unix {} \; else echo Обработка файла $ i ... dos2unix -437 $ i fi готово   -  person ruby    schedule 29.06.2011


Ответы (2)


Используйте 1_:

find file-path -type f -exec dos2unix {} \;
person Prince John Wesley    schedule 29.06.2011
comment
Как я могу исключить скрытые файлы (начиная с., Например .git /) - person Ismail; 31.03.2017

Я попробовал ответ принца Джона на SunOS 5.10 с помощью KornShell, и это не сработало.

По-видимому, из-за того, что команде dos2unix не хватало выходного файла, поэтому она выводилась только на стандартный вывод.

Эта модификация его ответа сработала для меня.

find . -type f -exec dos2unix {} {} \;
person Sekkuar    schedule 14.04.2014
comment
Dos2unix не является частью стандарта Unix. Их много разных реализаций. Люди всегда должны сначала обращаться к странице руководства. - person Erwin Waterlander; 15.04.2014
comment
Правда. Это страница руководства, показанная в моей системе: docs.oracle.com/cd/E19253-01/816-5165/dos2unix-1/index.html - person Sekkuar; 15.04.2014