Saya belum terlalu terbiasa dengan semua triknya grep/find/awk/xargs
.
Saya punya beberapa file yang cocok dengan pola tertentu, katakanlah *.xxx
. File-file ini berada di tempat acak di seluruh direktori tertentu. Bagaimana saya bisa menemukan semua file seperti itu, dan memindahkannya ke folder di direktori home saya di Unix (yang mungkin belum ada)?
Jawaban:
sumber
mv -i -t ~/dst {} +
Jika Anda ingin memindahkan semua file di dalam hierarki direktori ke direktori tujuan tunggal, dalam bash ≥4 (masukkan
shopt -s globstar
Anda~/.bashrc
) atau zsh:Dalam cangkang lain:
Cara membaca
find
perintah ini :.
: melintasi direktori saat ini-name '*.xxx'
: bertindak pada file yang namanya cocok dengan pola ini-exec … \;
: lakukan perintah ini pada setiap file, ganti{}
dengan path ke fileAda perintah yang lebih kompleks menggunakan
find
itu lebih cepat jika Anda memiliki banyak file karena tidak perlu memintamv
proses terpisah untuk setiap file:The
+
di bagian akhir memberitahufind
untuk menjalankan perintah pada beberapa file sekaligus. Karenafind
hanya bisa meletakkan nama file di akhir baris perintah, danmv
perlu memiliki direktori tujuan yang terakhir, kami menggunakan shell perantara untuk mengatur ulang argumen ("$0"
adalah argumen pertama ke shell~/new-directory
,, dan"$@"
argumen berikutnya datang darifind
Perluasan{}
).sumber
Jika Anda ingin mereplikasi struktur direktori dari file sumber yang cocok ke direktori target yang baru, Anda dapat menggunakan opsi GNU cp's --parents :
sumber
Anda dapat menggunakan find tanpa
-exec
juga:sumber
find -exec
itu jauh lebih aman; contoh di atas akan gagal pada nama file yang mengandung spasi, misalnya.