Files
使用文件名過濾器刪除/移動目錄中的文件
所以我有需要刪除/移動/過濾的文件。
所有文件在一個目錄中都有這樣的模式,假設目錄
frames
包含這個模式 filenametimestamp_in_nanosecond.jpg
。這是使用來自 ls 的流水線尾部的文件的範例。
ls | tail
. (我使用 tail 是因為 ls 太慢,可能是因為要列出的文件太多)。.../uwc/frames $ ls | tail 1660649146201561661.jpg 1660649146411875151.jpg 1660649146622526505.jpg 1660649146832063432.jpg 1660649147042957234.jpg 1660649147254488848.jpg 1660649147466753015.jpg 1660649147889093171.jpg 1660649148193314525.jpg 1660649148786199681.jpg
如果我想將文件移動到另一個目錄
frames2
,比如指定範圍,比如這個範圍:From 1660649147000000000.jpg Until 1660649148000000000.jpg
因此,
frames2
dir 將僅包含這些文件:1660649147042957234.jpg 1660649147254488848.jpg 1660649147466753015.jpg 1660649147889093171.jpg
使用萬用字元
mv 1660649147?????????.jpg frames2/
取決於您是否要包括上限,也許還有
mv 1660649148000000000.jpg frames2/
如果有太多文件需要萬用字元匹配而不會耗盡緩衝區空間,請
find
改用:find . -name 'frames2' -prune -o -name '1660649147?????????.jpg' -exec mv -t frames2/ {} +
筆記
- 該
-name 'frames2' -prune
子句防止find
下降到frames2
子目錄。如果實際上在其他地方,則不需要它(或-o
“或”) 。frames2
- 如果您
mv
沒有 GNU 擴展-t
,請將-exec
子句更改為-exec mv {} frames2/ \;
,但要意識到這將花費相當長的時間才能完成。在所有情況下,您都可以修改
mv
以echo mv
查看所選文件集,而無需實際移動它們。