あるディレクトリから別のディレクトリへのファイル名の変更と移動

あるディレクトリから別のディレクトリへのファイル名の変更と移動

パス 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部分を実行します。

ここに投稿するときは、常にファイル名を引用する必要があります。

おすすめ記事