Da der rename
Befehl aus unbekannten Gründen bei mir nicht funktioniert hat und ich keine anderen Antworten auf meine Frage bekomme, habe ich mich selbst bemüht, die Umbenennung zu ermöglichen. Dies ist möglicherweise nicht der beste Ansatz, um die Dateien umzubenennen, aber es hat bei mir funktioniert. Deshalb möchte ich es als Antwort veröffentlichen, damit jemand, der dies liest, Hilfe erhält, um die Dateinamen so zu ändern, wie ich es getan habe.
Jetzt weiß ich, dass alle Dateien einen bestimmten Text in ihren Namen haben, nämlich das Wort "Block". Im Folgenden sind die Dateinamen aufgeführt, bevor sie umbenannt wurden:
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
Jetzt habe ich ein kleines Shell-Skript geschrieben, um dies zu ermöglichen. Es folgt der Code:
#!/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
Und das war's, wenn ich das Skript ausführe, benennt es alle Dateinamen mit Leerzeichen (
) oder $
oder @
mit _
anstelle dieser Zeichen um.