Як рекурсивно торкатися файлів, що відповідають шаблону


8

У моєму каталозі ~ / docs я хочу "торкнутися" всіх файлів, що закінчуються .txt

Як я можу це зробити?

Відповіді:


20

З find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Ви шукаєте в ~/docs
  • nameВаріант буде відповідати всім txtфайлам -  execвиконає команду touchна ім'я файлу, який заміщений в{}
  • \;завершує команду і touchбуде викликано один раз для кожного знайденого файлу

Примітка:

  • Невелика різниця, \+в кінці конструює одну єдину команду для запуску touchвсіх цих файлів одночасно. Це неможливо з усіма командами, але це працює touchі заощаджує вам кілька дзвінків, якщо у вас багато файлів, на які це впливає.

4
{} \+Було б краще тут ... touchможе обробляти багато імен файлів у своєму командному рядку, тому, наприклад, з 10 тис. файлів та {} \; 10 тис. дзвінків буде здійснено touch... Використання {} \+дзвонить touchлише один раз (залежно від наявної пам'яті) ... Тут уривок з ФАЙНДА людей-сторінки: -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Більш детально в man findдокументації.
Пітер.О

@ Peter.O Правда, просто звичка використовувати інший синтаксис.
slhck

@slhck: І набагато повільніше, чим вище накладні витрати.
Привіт71
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.