Cara mengulangi semua file / folder dalam folder

-1

Saya membuat skrip untuk pergi melalui folder yang mengubah nama semua file dan folder di dalamnya menjadi VAR1, VAR2, VAR3, dll. Di mana VAR adalah variabel yang ditentukan pengguna. Saya salah mengira ini akan sederhana.

Yang perlu saya ketahui adalah bagaimana membuat perulangan 'for' mengulangi semua item di dalam folder tertentu, jadi bagaimana cara melakukannya?

Terima kasih!

Jacob_
sumber
Secara rekursif atau satu tingkat?
Grzegorz
@ Grzegorz apa maksudmu: P
Jacob_
Dalam folder yang diberikan atau juga subfolder (subdirektori?) Saya bertanya karena Anda dapat menggunakan '*' atau findperintah.
Grzegorz
@Grzegorz hanya folder yang diberikan
Jacob_

Jawaban:

1

Berikut ini sebuah contoh. Anda perlu membuat skrip Anda sendiri dan memberikan argumen. Di bawah ini hanya prosedur yang berfungsi untuk argumen Anda. Semua pemeriksaan argumen diserahkan kepada Anda.

prefix=AAA
i=1
for f in * ; do
   mv $f $prefix$i
   ((i++))
done
Grzegorz
sumber
0

Anda perlu menggunakan finddaftar semua file dan direktori untuk memberikan perintah di sepanjang baris: -

find TargetDir|sort -r|while f="`line`"; do ((n=$n+1)); mv "$f" "${f%/*}/$VAR$n"; done

Kebalikannya sortmemastikan bahwa file diganti nama sebelum direktori di jalurnya diganti nama.

AFH
sumber
findbersifat rekursif. Opsi tambahan -mindepth 1 -maxdepth 1diperlukan untuk membatasi kedalaman traverse.
Abel Cheung
@AbelCheung - Penanya menyiratkan bahwa dia ingin mengganti nama melalui semua subdirektori. Saya tidak akan menyarankan finduntuk pencarian satu tingkat.
AFH
Lihat komentar segera di bawah pertanyaan asli.
Abel Cheung
@AbelCheung - Oke. Komentar itu tidak ada di sana ketika saya mulai menulis jawaban saya.
AFH