【发布时间】:2014-05-04 16:34:24
【问题描述】:
我有这个命令来连接匹配模式的文件,但我确实想删除它们,并且我想防止刚刚创建的文件应该被删除(而不是连接)的情况
示例文件名:
start-2014-03-25-08-08.log
scheduled-2014-03-19-13-03.log
scheduled-2014-03-19-14-58.log
使用的命令
ls -1 | sed -r "s/(.*)-[0-9]{4}(-[0-9]{2})+/cat \1* >> \1$(date +"-%Y-%m-%d-%H-%M")/" | uniq | cat
输出是:
cat start* >> start-2014-03-26-12-26.log
cat scheduled* >> scheduled-2014-03-26-12-26.log
但我确实想在附加文件后删除它们。由于文件很大,可能会稍有延迟,同时会创建一个新的“保存模式”文件,我不想删除那个文件。
正确的方法是什么?
更新
我现在有这个。
rm -f temp.files;ls -1 *.log > temp.files; cat temp.files | sed -r "s/(.*)-[0-9]{4}(-[0-9]{2})+\.log/cat \1* >> \1$(date +"-%Y-%m-%d-%H-%M").log/" | uniq | sh; xargs rm -rf < temp.files; rm -f temp.files
【问题讨论】:
-
我认为最好为
cat和rm创建一个临时文件(或var 或其他文件)来存储受影响的文件列表,然后使用它。跨度> -
您正在尝试附加到与您指定的
glob匹配的文件名! (这会导致输出文件附加到自身。) -
@devnull 查看我的更新
-
如果我理解正确,您的命令会附加但不会删除文件,还是其他原因?
-
@devnull 我认为该命令现在可以正常工作了。