Bagaimana cara `menyentuh` file secara rekursif?


40

Saya perlu mengubah stempel waktu sekitar 5000 file.

Mengetik touch file1.txt, touch file2.txtakan membawaku selamanya.

Apakah ada cara untuk melakukan sesuatu di barisan touch -R *?


1
Apakah maksud Anda ini touch file{1..3}.txt?
Avinash Raj

2
Anda tidak menentukan shell mana yang Anda gunakan, tetapi dengan zsh, touch **/*nyaman.
Marc Glisse

@Marc Glisse Ingatlah bahwa daftar argumen dengan mudah menjadi terlalu panjang.
bac0n

Di bash, Anda perlu mengatur globstar sebelum Anda dapat menggunakan sentuhan **
bac0n

Jawaban:


71

Anda dapat menggunakan findperintah untuk menemukan semua file Anda dan mengeksekusi touchpada setiap file yang ditemukan menggunakan-exec

find . -type f -exec touch {} +

Jika Anda ingin memfilter hasil Anda hanya untuk file teks, Anda dapat menggunakan

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

17
Saya sarankan menggunakan -exec's +terminator (bukan \;). Ini akan mengaitkan beberapa argumen ke setiap touchinstance (hingga batas argumen sistem) dan karenanya akan membayar jauh lebih sedikit (dan mungkin lebih cepat).
Oli


2
Dan untuk lari kering, tinggalkan saja -exec touch {} +bagian itu, dan itu akan mencetak ke terminal Anda apa yang akan terpengaruh.
Alex

5
Terima kasih, Meskipun saya pikir 'temukan' tidak ada parameter pertamanya. find . -type f -exec touch {} +
giltsl

Bagaimana jika saya hanya ingin mengubah waktu akses, bukan waktu modifikasi? Haruskah itu "find -type f -exec touch -a {} +"?
weeo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.