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


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 {} +

17
Я бы предложил использовать -exec«s +терминатор (вместо \;). Это будет связывать несколько аргументов в каждом touchэкземпляре (вплоть до ограничения системных аргументов) и, следовательно, раскошелиться намного меньше (и, вероятно, будет быстрее).
Оли


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

5
Спасибо, хотя я думаю, что 'найти' не хватает его первого параметра. find . -type f -exec touch {} +
giltsl

Что если я хочу изменить только время доступа, а не время модификации? Должно ли это быть "find -type f -exec touch -a {} +"?
18:00
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.