假设我们有 4 个文件:
a.zip created on 28 feb 2018
b.zip created on 28 feb 2018
c.zip created on 2 mar 2018
d.zip created on 2 mar 2018
Run Code Online (Sandbox Code Playgroud)
我想搜索 28 Feb 的文件并将其压缩。
find ./ -type f -ls | grep 'Feb 28' | tar -czf somefile3.tar --null -T -
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
Sté*_*las 11
使用 GNU 或 FreeBSDfind
和 GNU 或 BSD tar
:
find . -type f -newermt 2018-02-28 ! -newermt 2018-03-01 -print0 |
tar -cf file.tar --null -T -
Run Code Online (Sandbox Code Playgroud)
(请注意,它不包括在精确的纳秒 2018-02-28T00:00:00.000000000 上最后修改的文件(并且可能在第二天的时间包含一个文件),这在具有纳秒粒度的文件系统上几乎永远不会发生,除非这些文件是用touch -t
/创建的,touch -d
或者它们本身是从不以亚秒级精度存储时间戳的档案中提取的)
POSIXly 并假设文件名不包含换行符(标准 tar 存档格式对文件名也有额外限制):
touch -d 2018-02-28T00:00:00 .start
touch -d 2018-03-01T00:00:00 .end
find . -type f -newer .start ! -newer .end ! -path ./.start ! -path ./.end |
pax -x ustar -w > file.tar
Run Code Online (Sandbox Code Playgroud)
如果您想要使用 GNU 工具在任何 2 月 28 日(而不仅仅是 2018 年)上次修改所有常规文件:
find . -type f -printf '%Tm-%Td-%p\0' |
sed -nz 's/^02-28-//p' |
tar -cf file.tar --null -T -
Run Code Online (Sandbox Code Playgroud)
的输出find -ls
不能可靠地自动进行后处理,它仅用于人类消费。
归档时间: |
|
查看次数: |
1548 次 |
最近记录: |