由于该rename
命令由于未知原因对我不起作用,并且我对我的问题没有任何其他答案,因此我自己尝试着使重命名成为可能。这可能不是重命名文件的最佳方法,但是它对我有用,这就是为什么我想将其发布为答案,以便如果其他人阅读,这可能会以我的方式获得一些帮助来更改文件名。
现在对我来说,我知道所有文件的名称中都会有一个特定的文本,即“阻止”一词。以下是重命名之前的文件名:
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
现在,我编写了一个小的Shell脚本来实现这一目标。以下是代码:
#!/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
就是这样,当我运行脚本时,它会重命名所有具有空格(
)或$
或@
带有_
而不是这些字符的文件名。