Bash
查找文件,複製但名稱不同
我在 /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。所以在我再次執行我的腳本後,它們將被最新的替換。
以下是希望不言自明的
find -maxdepth 1 -mtime -2 -type f -exec bash -c 'name=${1##*/}; cp "$name" /some/other/dir/${name%%[0-9]*}' _ {} \;
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 -
我認為這會做到 - 它似乎對我有用。只要
simon
,tom
和john
文件打算每兩天覆蓋一次 - 我相信應該這樣做。要麼是那個,要麼是非常接近。哦,但是,它確實需要 GNUtar
- 可能也需要 GNUfind
,儘管我不確定後者。我沒有仔細檢查這些,因為其中大部分是您自己的選擇。