Ini adalah kesalahan yang tidak berbahaya yang dapat Anda singkirkan dengan -depth
opsi.
find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;
Perilaku normal Find adalah memproses direktori dan kemudian mengembalikannya. Karena Anda telah mengganti namanya, temukan keluhan ketika mencoba muncul kembali. -depth
opsi memberi tahu find untuk mengulang terlebih dahulu, lalu memproses direktori setelahnya.
Tidak ada -execdir pilihan! Seperti yang dinyatakan dalam halaman manual find:
-execdir command {};
Seperti -exec
, tetapi perintah yang ditentukan dijalankan dari subdirektori yang berisi file yang cocok, yang biasanya bukan direktori tempat Anda mulai menemukan.
find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername \;
Dengan jawaban sebelumnya isi folder saya hilang.
Ini adalah solusi saya. Ini berfungsi dengan baik:
for i in
find -type d -name 'oldFolderName'
;dodirname=$(dirname "$i")mv $dirname/oldFolderName $dirname/newFolderNamedone