如果文件大小大于1kb,则Bash
我已经创建了一个如果文件大小大于1kb,则Bash,bash,Bash,我已经创建了一个vi文件,我想检查主目录中的文件,查看它们的大小。如果常规文件的大小大于1kb,我希望将其备份为扩展名为.bak的压缩文件。我从命令du-h--max depth=0*| sort-r开始,它列出了如下文件: 10K archive.tar 1.0K activity48 1.0K activity47 1.0K activity46 1.0K activity45 1.0k activity44 1.0K activity43 1.0K activity42 1.0K acti
vi
文件,我想检查主目录中的文件,查看它们的大小。如果常规文件的大小大于1kb,我希望将其备份为扩展名为.bak的压缩文件。我从命令du-h--max depth=0*| sort-r
开始,它列出了如下文件:
10K archive.tar
1.0K activity48
1.0K activity47
1.0K activity46
1.0K activity45
1.0k activity44
1.0K activity43
1.0K activity42
1.0K activity41
1.0K activity40
1.0K activity39
1.0K activity38
这些是列出的一些文件,但我的想法是我需要剪切字段1,以某种方式创建一个if语句,并比较字段,比如
if[$x-ge 1.0];做点什么。有没有关于我应该如何处理这个问题的想法…?我会使用查找:
find . -maxdepth 1 -type f -size +1k -exec gzip -k -S .bak '{}' \;
不过,我可能不会对压缩文件使用自定义扩展名;这只不过是在问未来的困惑
find
搜索目录(本例中为
)以查找通过筛选的文件。可以构造复杂的滤波器;在这种相对简单的情况下,将链接几个基本过滤器以进行选择
- 深入
不超过一级的文件(即不搜索子目录)
- 是常规文件
- 1KB或更大,以及
- 对于其
gzip-k S.bak filename
退出,状态代码为0
-exec
过滤器的特殊之处在于它被视为一个操作(其他操作包括-delete
和-print
)。如果筛选器不包含操作,则会将隐式的-print
操作附加到筛选器,以便打印适合筛选器的所有文件的名称。因为我们的过滤器包含一个动作,所以不会发生这种情况
在任何情况下,我们对本例中的-exec
过滤器的结果并不感兴趣,只对其运行指定命令的副作用感兴趣。知道-exec
也是一个过滤器是很有用的,但是,如果您想链接命令。例如,如果要在打包备份文件后将其复制到另一个文件夹,可以编写
find . -maxdepth 1 -type f -size +1k -exec gzip -k -S .bak '{}' \; -exec cp '{}.bak' /some/where/else/ \;
然后,只有当返回的gzip-k-S.bak文件名的退出状态为0
(即,如果它指示成功完成)时,才会执行cp filename.bak/some/where/else/
find . -maxdepth 1 -type f -size +1k -exec gzip -k -S .bak '{}' \;
不过,我可能不会对压缩文件使用自定义扩展名;这只不过是在问未来的困惑
find
搜索目录(本例中为
)以查找通过筛选的文件。可以构造复杂的滤波器;在这种相对简单的情况下,将链接几个基本过滤器以进行选择
- 深入
不超过一级的文件(即不搜索子目录)
- 是常规文件
- 1KB或更大,以及
- 对于其
gzip-k S.bak filename
退出,状态代码为0
-exec
过滤器的特殊之处在于它被视为一个操作(其他操作包括-delete
和-print
)。如果筛选器不包含操作,则会将隐式的-print
操作附加到筛选器,以便打印适合筛选器的所有文件的名称。因为我们的过滤器包含一个动作,所以不会发生这种情况
在任何情况下,我们对本例中的-exec
过滤器的结果并不感兴趣,只对其运行指定命令的副作用感兴趣。知道-exec
也是一个过滤器是很有用的,但是,如果您想链接命令。例如,如果要在打包备份文件后将其复制到另一个文件夹,可以编写
find . -maxdepth 1 -type f -size +1k -exec gzip -k -S .bak '{}' \; -exec cp '{}.bak' /some/where/else/ \;
然后,只有当返回退出状态为0
的gzip-k-S.bak filename
时,才会执行cp filename.bak/some/where/else/
(即,如果它指示成功完成)
应该这样做。它会生成压缩的.gz文件
应该这样做。它会生成压缩的.gz文件