lista.txt というファイルに、次のようなリストがあります。
mickey
donald
daffy
bugs
多くのファイルを含むフォルダがあります: filename1、filename2、... filenameN。
これらのファイルを繰り返し処理して、次のことを達成したいと考えています。
filename1 => mickey
filename2 => donald ...
このタスクの実際のサンプル コードを提供してもらえますか?
lista.txt というファイルに、次のようなリストがあります。
mickey
donald
daffy
bugs
多くのファイルを含むフォルダがあります: filename1、filename2、... filenameN。
これらのファイルを繰り返し処理して、次のことを達成したいと考えています。
filename1 => mickey
filename2 => donald ...
このタスクの実際のサンプル コードを提供してもらえますか?
あなたのためにあなたの仕事をするのは私のスタイルではありません. デバッグを手伝うことができるように、すでに試したことを投稿してもらいたいのですが、この問題はとても簡単なので、とにかく噛むつもりです。
x=1; for y in $(cat lista.txt); do mv $y filename$x; let x=$x+1; done
bash 配列の使用:
files=( * )
i=0
while read -r new_name; do
mv "${files[$i]}" "$new_name"
(( i++ ))
done < lista.txt
let "count=1"
for newname in $(cat lista.txt); do
mv "filename$count" "$newname"
let "count++"
done
この方法で、特定の「filelist.txt」に従って、ディレクトリのすべてのflacファイルの名前を変更するために、新しいファイル記述子で二重リダイレクトを使用しました。
while read -u 9 filename ; do
read -u 8 newname
echo mv "$filename" "$newname"
done 9<<<"$(ls -1 *flac)" 8< filelist.txt
ディレクトリ上の各 .flac ファイル名は、ファイル記述子 9 を介して変数「filename」に移動しますが、同じ繰り返しで、filelist.txt の各行はファイル記述子 8 を介して変数「newname」に移動します。
はい、新しいファイル記述子の 1 つを回避して、単にデフォルトの標準入力を使用することもできました (「-u 9」と「9」を削除)。そうすれば、対話性または制御のためにループ内に read ステートメントを含めることができ、リダイレクトされたデータによって埋められることはありません。
エコーは「テスト専用」であり、操作の承認後に削除する必要があります。