Vì rename
lệnh không hoạt động đối với tôi vì những lý do không xác định và tôi không nhận được câu trả lời nào khác cho câu hỏi của mình, bản thân tôi đã cố gắng nỗ lực để đổi tên thành có thể. Đây có thể không phải là cách tiếp cận tốt nhất để đổi tên các tệp nhưng nó hiệu quả với tôi và đây là lý do tại sao tôi muốn đăng nó dưới dạng câu trả lời để nếu có ai khác đọc thì có thể nhận được sự giúp đỡ để thay đổi tên tệp theo cách tôi đã làm.
Bây giờ đối với tôi, tôi biết rằng tất cả các tệp sẽ có một văn bản cụ thể trong tên của chúng là từ "Chặn". Sau đây là tên tệp trước khi đổi tên được thực hiện:
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
Bây giờ tôi đã viết một kịch bản shell nhỏ để thực hiện điều này có thể. Sau đây là mã:
#!/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
Và đó là nó, khi tôi chạy kịch bản, nó đổi tên tất cả các tên file có khoảng trống (
) hoặc $
hoặc @
với _
thay vì những nhân vật này.