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!


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

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.