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:
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
Dalam cangkang lain:
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
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 file
Ada perintah yang lebih kompleks menggunakan find
itu lebih cepat jika Anda memiliki banyak file karena tidak perlu meminta mv
proses terpisah untuk setiap file:
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
The +
di bagian akhir memberitahu find
untuk menjalankan perintah pada beberapa file sekaligus. Karena find
hanya bisa meletakkan nama file di akhir baris perintah, dan mv
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 dari find
Perluasan {}
).