ファイルを見つけてコピーしましたが、名前が異なります。

ファイルを見つけてコピーしましたが、名前が異なります。

/home/user/filesフォルダにランダムな数字を含むファイルがあります(4日ごとに新しいファイルが作成されます)。たとえば、

john20
john25
john40
tom12
tom32
simon2
simon8
simon53

最後に変更されたファイル(最新ファイル)をインポートし、ファイル名にその番号がない別の場所(/home/user/fixed)にコピーしたいと思います。

findコマンドを使用してフィルタリングしてコピーする方法を知っていますが、この数字なしでこれらの数字をすべてコピーする方法はわかりません。

find $files_are_here -maxdepth 1 -mtime -2 -type f -exec cp {} $new_path \;

これにより、過去2日間に変更されたすべてのファイルが新しいパスにコピーされますが、元の名前は保持されます。私:

john40
tom32
simon53

しかし、そのフォルダにはJohn、Tom、Simonだけが必要です。したがって、スクリプトを再実行すると、最新のスクリプトに置き換えられます。

答え1

以下は自明な説明であることを願っています。

find -maxdepth 1 -mtime -2 -type f  -exec bash -c 'name=${1##*/}; cp  "$name" /some/other/dir/${name%%[0-9]*}' _ {} \;

答え2

find -mtime -2 \
     -maxdepth 1 \
    \! -type d \
    \( -name 'simon*' \
    -o -name 'tom*' \
    -o -name 'john*' \
    \) | tar -T - \
     --xform='s/[0-9]*$//' \
     -cf - | tar -C ./path/to/destination --keep-newer-files -xf -

私の考えではこれが可能だと思います。私には効果があるようだ。simontomおよびファイルを二日ごとに上書きするようになっている限りjohn、これが効果があると思います。それとも非常に近いです。ああ、しかしGNUが必要ですtar。おそらくfindGNUも必要でしょう。後者についてはよくわかりません。私はこれらをあまり詳しく扱っていませんでした。なぜなら、ほとんどはあなた自身の選択だからです。

関連情報