Come toccare i file in modo ricorsivo?


40

Ho bisogno di cambiare il timestamp di circa 5000 file.

Digitare touch file1.txt, touch file2.txtmi prenderà per sempre.

C'è un modo per fare qualcosa nelle righe di touch -R *?


1
intendevi questo touch file{1..3}.txt?
Avinash Raj,

2
Non hai specificato quale shell stai usando, ma con zsh touch **/*è conveniente.
Marc Glisse,

@Marc Glisse Tieni presente che l'elenco degli argomenti diventa facilmente troppo lungo.
bac0n

In bash devi impostare globstar prima di poter usare il tocco **
bac0n

Risposte:


71

Puoi usare il findcomando per trovare tutti i tuoi file ed eseguire touchsu ogni file trovato usando-exec

find . -type f -exec touch {} +

Se si desidera filtrare il risultato solo per i file di testo, è possibile utilizzare

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

17
Suggerirei di usare -execil +terminatore (invece di \;). Ciò incatenerà più argomenti su ciascuna touchistanza (fino al limite degli argomenti di sistema) e quindi verrà espulso molto meno (e probabilmente sarà più veloce).
Oli


2
E per una corsa a secco, lascia semplicemente fuori la -exec touch {} +parte e stamperà sul tuo terminale ciò che avrebbe influenzato.
Alex

5
Grazie, anche se penso che manchi "trova" il suo primo parametro. find . -type f -exec touch {} +
Giltsl,

Cosa succede se desidero solo modificare il tempo di accesso, non il tempo di modifica? Dovrebbe essere "trova -type f -exec touch -a {} +"?
weeo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.