gpt4 book ai didi

linux - 在shell中,如果文件大于100MB,如何删除文件,否则移动

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:15 25 4
gpt4 key购买 nike

使用 shell 命令执行以下操作的最简单方法是什么?

伪代码:rm abc if >100MB else mv abc /tmp

abc 可以是一个文件的名称或一个目录的名称。

我想要一个别名,如果在文件或目录上运行,它会在其大小大于 100MB 时将其删除,否则会将其移动到另一个目录。我知道我可以通过整个功能完成类似的事情,但必须有一个巧妙的单行线可以做到同样的事情。

最佳答案

要移动单个常规文件(如果其大小小于 100MB)并删除它,您可以使用以下命令:

# 104857600 = 1024 * 1024 * 100 = 100M
[ $(stat --printf '%s' "$file") -gt 104857600 ] && rm "$file" || mv "$file" /tmp/

要移动单个目录及其内容(如果其总大小低于 100MB)并删除它,您可以使用以下命令:

[ $(du -s "$directory" | cut -f1) -gt 104857600  ] && rm -rf "$directory" || mv "$directory" /tmp/

要根据输入参数是指向文件还是目录来执行其中一项操作,可以使用 if [ -d "$path" ]; then <directory pipeline>; else <file pipeline>; fi .

要根据目录的大小递归移动或删除目录中的所有文件,您可以使用以下命令:

find . -type f -a \( -size +100M -exec rm {} + -o -exec mv -t /tmp/ {} + \)

它首先选择当前目录中的文件,然后执行rm ...包含大小大于 100M 和 mv ... /tmp 的文件的列表与其余文件。

关于linux - 在shell中,如果文件大于100MB,如何删除文件,否则移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com