Як "торкатися" файлів рекурсивно?


40

Мені потрібно змінити часову позначку близько 5000 файлів.

Набравши текст touch file1.txt, touch file2.txtвізьме мене назавжди.

Чи є спосіб зробити щось у рядках touch -R *?


1
ти це мав на увазі touch file{1..3}.txt?
Avinash Raj

2
Ви не вказали, яку оболонку ви використовуєте, але touch **/*зручно з zsh .
Марк Глісс

@Marc Glisse Майте на увазі, що список аргументів легко стає занадто довгим.
bac0n

У bash вам потрібно встановити globstar, перш ніж використовувати сенсорний **
bac0n

Відповіді:


71

Ви можете використовувати findкоманду, щоб знайти всі ваші файли та виконати touchкожен знайдений файл за допомогою-exec

find . -type f -exec touch {} +

Якщо ви хочете відфільтрувати результат лише для текстових файлів, ви можете використовувати

find . -type f -name "*.txt" -exec touch {} +

17
Я б запропонував використовувати термінатор -exec' +(замість \;). Це пов'язуватиме декілька аргументів на кожен touchекземпляр (до ліміту системних аргументів) і, отже, вийде набагато менше (і, можливо, буде швидше).
Олі


2
А для сухого ходу, просто залишити з -exec touch {} +частини, і він буде друкувати на термінал , що він би вплинув.
Олексій

5
Дякую, Хоча я думаю, що в «знахідці» відсутній його перший параметр. find . -type f -exec touch {} +
giltsl

Що робити, якщо я хочу лише змінити час доступу, а не час модифікації? Чи повинен це бути "find-type f -exec touch -a {} +"?
weeo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.