Як застосувати 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.