我有一堆日志文件,我必须删除一些小尺寸的文件,这些文件是创建的错误文件。 (63字节)。 我只需要复制那些包含数据的文件。
答案 0 :(得分:18)
Shell(linux);
find . -type f -size 63c -delete
将遍历子目录(除非你另有说明)
答案 1 :(得分:11)
由于您使用“python”标记了您的问题,因此您可以使用该语言执行此操作:
target_size = 63
import os
for dirpath, dirs, files in os.walk('.'):
for file in files:
path = os.path.join(dirpath, file)
if os.stat(path).st_size == target_size:
os.remove(path)
答案 2 :(得分:5)
Perl one liner是
perl -e 'unlink grep {-s == 63} glob "*"'
虽然,在运行它之前测试它会做什么总是一个好主意:
perl -le 'print for grep {-s == 63} glob "*"'
如果您想要遍历整个目录树,则需要使用不同的版本:
#find all files in the current hierarchy that are 63 bytes long.
perl -MFile::Find=find -le 'find sub {print $File::Find::name if -s == 63}, "."'
#delete all files in the current hierarchy that 63 bytes long
perl -MFile::Find=find -e 'find sub {unlink if -s == 63}, "."'
我在查找版本中使用了需要$File::Find::name
,因此您获得了整个路径,取消链接版本不需要它,因为File::Find
将目录更改为每个目标目录并设置{{3} }是文件名($_
和-s
获取文件名的方式)。您可能还想查找unlink
和grep