以来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
それだけです。スクリプトを実行すると、これらの文字の代わりに、空白(
)または$
or @
を含むすべてのファイル名が変更されます_
。