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

40

Мне нужно изменить временную метку около 5000 файлов.

Печатание touch file1.txt, touch file2.txtпримет меня навсегда.

Есть ли способ сделать что-то по линии touch -R *?

Унамата Санатарай
источник
1
ты имел ввиду это touch file{1..3}.txt?
Авинаш Радж
2
Вы не указали, какую оболочку вы используете, но с zsh touch **/*это удобно.
Марк Глисс
@Mark Glisse Имейте в виду, что список аргументов легко становится слишком длинным.
bac0n
В bash вам нужно установить globstar, прежде чем вы сможете использовать touch **
bac0n

Ответы:

71

Вы можете использовать findкоманду, чтобы найти все ваши файлы и выполнить touchдля каждого найденного файла, используя-exec

find . -type f -exec touch {} +

Если вы хотите отфильтровать результаты только для текстовых файлов, вы можете использовать

find . -type f -name "*.txt" -exec touch {} +
G_p
источник
17
Я бы предложил использовать -exec«s +терминатор (вместо \;). Это будет связывать несколько аргументов в каждом touchэкземпляре (вплоть до ограничения системных аргументов) и, следовательно, раскошелиться намного меньше (и, вероятно, будет быстрее).
Оли
2
А для сухого хода, просто оставить из -exec touch {} +части, и он будет печатать на терминал , что он бы повлиял.
Алекс
5
Спасибо, хотя я думаю, что 'найти' не хватает его первого параметра. find . -type f -exec touch {} +
giltsl
Что если я хочу изменить только время доступа, а не время модификации? Должно ли это быть "find -type f -exec touch -a {} +"?
18:00