Ini mungkin cukup mudah, tetapi apa cara terbaik untuk mengubah nama semua direktori bernama "A" menjadi "B" secara rekursif di bawah direktori dasar tanpa mengikuti tautan simbolis dan menggabungkan konten direktori yang bertentangan menjadi satu? Artinya, jika direktori "B" sudah ada, maka konten "A" harus dipindahkan ke "B", dan direktori "A" yang kosong dihapus.
3
find "/C/Users/User/Desktop/a" -depth -type d -name "\a" -execdir mv -T -f "{}" "./b" \;
Anda mungkin dapat menempatkan perintah RENAME sebagai pengganti perintah MV atau sesuatu. Saya tidak bisa mendapatkannya untuk menelusuri semua folder seolah-olah tidak memiliki izin untuk mengubah nama beberapa tapi itu sedekat yang saya bisa dapatkan sebelum saya kehabisan waktu.Jawaban:
Tidak ada satu pun program yang melakukan fungsi rename / merge
mv ... -t ...
akan sangat membantu jika bisa lebih mudah digunakan dalamfind
perintah. Jadi yang saya rencanakan adalah:Apa yang dilakukan adalah: -
A
.BaseDir/A/A
akan diganti namanya sebelumnyaBaseDir/A
: jika yang terakhir diganti namanya terlebih dahulu, yang pertama tidak akan ditemukan selanjutnya.B
tidak ada, mengubah nama sederhana berfungsi; jika tidak, isi dariA
dipindahkan keB
dan sekarang kosongA
dapat dihapus.Perhatikan bahwa jika
B
sudah ada, semua file yang ada di dalamnya akan ditimpa oleh file dengan nama yang sama diA
: Anda mungkin ingin menambahkan perintah tambahan untuk mencegah ini - Anda bisa menggunakanmv -i
, tetapi Anda perlu membangun kembali terminal untuk segala permintaan (mismv </dev/stdin -i ...
, atau apa pun yang didukung oleh Linux Anda), karenastdin
telah dialihkan ke skrip.Saya telah menggunakan tanda kutip untuk mengizinkan bagian yang kosong di salah satu elemen jalur, termasuk
A
danB
.Saya telah mencoba menguji hierarki yang berbeda, tetapi saya tidak dapat memastikan bahwa saya telah membahas semua struktur yang mungkin Anda gunakan. Saya sarankan Anda meletakkan
echo
sebelummv
danrmdir
perintah terlebih dahulu, sampai Anda memverifikasi bahwa perintah itu melakukan apa yang Anda inginkan.sumber