2つのディレクトリがあります。
/routea/path/to/dir1
/routeb/path/to/dir2
いくつかのファイルがありますdir1
。
file.name
file.name.1
file.name.2
file.name.3
(4つ以上のファイルがある可能性があります。)1-3で終わるファイルを次に移動する必要があります。dir2
私は試しました(これは明らかなステップだと思います)。
mv /routea/path/to/dir1/file.name.* /routeb/path/to/dir2/
しかし、それは私にだけ教えてくれます。
mv: cannot stat `/routea/path/to/dir1/file.name.*': No such file or directory
状況を複雑にするために、理想的には、各ファイルを移動するときに各ファイルの最後にタイムスタンプを追加したいと思います。これにより、次のような結果が得られます。file.name.1.yyyymmddhhmmss
誰もが正しい方向に私を指すことができますか?これを行うには、何らかの形のループを使用する必要があると思いますが、方法がわかりません。
ベストアンサー1
たとえば、次のようにforループを使用してこれを実行できます。
for f in /routea/path/to/dir1/file.name.? ; do fn=`echo $f | cut -d'/' -f6`; mv $f /routeb/path/to/dir2/$fn.`date +%Y%m%d%H%M` ; done
切り取りコマンドは、サブディレクトリの数に応じてカスタマイズする必要があります。日付も追加されます。 bashを使用してRedHatでテストされました。
ディレクトリからコマンドを起動する場合は/route/path/to/dir1/
必要ありません。
fn=`echo $f | cut -d'/' -f6`;
部分。