要移动单个常规文件(如果大小小于100MB),否则将其删除,可以使用以下命令:
# 104857600 = 1024 * 1024 * 100 = 100M
[ $(stat --printf '%s' "$file") -gt 104857600 ] && rm "$file" || mv "$file" /tmp/
Run Code Online (Sandbox Code Playgroud)
要移动单个目录及其内容(如果其总大小小于100MB),否则要删除它,可以使用以下命令:
[ $(du -s "$directory" | cut -f1) -gt 104857600 ] && rm -rf "$directory" || mv "$directory" /tmp/
Run Code Online (Sandbox Code Playgroud)
要根据输入参数是指向文件还是指向目录来执行一项或多项操作,请使用[ -d "$path" ] && <directory pipeline> || <file pipeline>(或最好是因为这开始是很多代码,一种标准if [ -d "$path" ]; then <directory pipeline>; else <file pipeline>; fi)。
要根据其大小递归移动或删除目录中的所有文件,可以使用以下命令:
find . -type f -a \( -size +100M -exec rm {} + -o -exec mv -t /tmp/ {} + \)
Run Code Online (Sandbox Code Playgroud)
它首先选择当前目录中的文件,然后rm ...使用大小大于100M的文件列表以及mv ... /tmp其余文件执行。