Karena rename
perintah itu tidak berfungsi untuk saya karena alasan yang tidak diketahui dan saya tidak mendapatkan jawaban lain untuk pertanyaan saya, saya sendiri mencoba melakukan upaya untuk membuat penggantian nama menjadi mungkin. Ini mungkin bukan pendekatan terbaik untuk mengubah nama file tetapi berhasil bagi saya dan inilah mengapa saya ingin mempostingnya sebagai jawaban sehingga jika orang lain membaca ini mungkin mendapatkan bantuan untuk mengubah nama file seperti yang saya lakukan.
Sekarang bagi saya, saya tahu bahwa semua file akan memiliki teks tertentu dalam nama mereka yang merupakan kata "Blokir". Berikut ini adalah nama file sebelum penggantian nama dilakukan:
anks@anks:~/anks$ ls -lrt
total 4
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$AP@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$HP@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$CH@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$KK@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:48 Bharti TRX Block Report$UW@12Jul15.csv
Sekarang saya telah menulis skrip shell kecil untuk memungkinkan ini. Berikut ini adalah kode:
#!/bin/bash
PATH="/home/ebfijjk/anks"
# Put the old filenames in a file.
ls $PATH | grep Block >> oldValues
# Put the new names without " " or "@" or "$" in another file
cat oldValues | sed 's/\$/_/g' | sed 's/\@/_/g' | sed 's/ /_/g' >> newValues
# Create a new file with Old names and New names seperated by a #.
paste -d'#' oldValues newValues >> oldAndNew
# Read the file with both old and new names and rename them with the new names.
while IFS='#'; read oldValue newValue
do
mv "$oldValue" "$newValue"
done < oldAndNew
rm oldValues newValues oldandNew
Dan itu saja, ketika saya menjalankan skrip, itu mengubah nama semua nama file yang memiliki spasi kosong (
) $
atau @
dengan _
alih - alih karakter ini.