Поскольку 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
Теперь я написал небольшой сценарий оболочки, чтобы сделать это возможным. Ниже приведен код:
#!/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
И это все , когда я запустить сценарий, он переименовывает все имена файлов , содержащие пробелы (
) или $
или @
с _
вместо этих символов.