パス 1 で実行し、パス 2 からパス 3 にファイル名を変更して移動するコマンドのヘルプが必要です。
考える
path1 = /data/run/
path2 = /data/output/
path3 = /data/archive/
パス2には、「one.txt」、「two.txt」などのいくつかのファイルが含まれています。
「one.txt」ファイルの名前を「archive_one.txt」に変更し、それをpath3に移動できるコマンドをpath1で実行したいと思います。
'/data/run'で次のコマンドを試しましたが、フルパスをファイル名として使用し、エラーが発生します。
$for FILENAME in /data/output/*.txt; do mv $FILENAME /data/archive/archive_$FILENAME; done
どうすればいいですか?ありがとうございます。
答え1
あなたがしたいことは
for FILENAME in /data/output/*.txt;
do
mv "$FILENAME" "/data/archive/archive_$(basename "$FILENAME")" ;
done
もちろんこれは続くことができます。
どこ
basename "$FILENAME"
ファイル名の最後の部分を抽出します。basename "$FILENAME" .txt
同じストライプ.txt
部分を実行します。
ここに投稿するときは、常にファイル名を引用する必要があります。