我想在 Linux 终端中创建一个 bash 脚本以进入一个文件,如果它为空,则将其删除:
#!/bin/bash
echo " Enter name of a directory"
read Dir
for Directory in $( ls $HOME )
do
test -d $HOME/$dir
if [ $# -eq 0 ]
then
for filename in $( ls $HOME/$Dir )
do
test -d $HOME/$dir/$filename
if [ ! -s "$filename" ]
then
rm $HOME/$dir/$filename
else
echo " not empty"
fi
done
else
echo " $Dir is not a directory"
fi
done
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码,但它不起作用。它识别创建的文件,但即使为空也不会删除它。Salah 显示没有这样的文件或目录
编辑 1 (Erik Renouf) 以坚持按照 The Open Group Base Specifications Issue 6 中的规定查找
已编辑 2(通配符)+ 符号和原始 {}
试一试,将下面命令行中的mydir替换为需要计算的目录名称:
find "${HOME}"/mydir -size 0 -type f -exec rm {} +
Run Code Online (Sandbox Code Playgroud)
它正在删除位于“${HOME}”/mydir 目录及其子目录(如果有)中的所有空文件。
下面有一个脚本版本:
#!/bin/bash --
find "${HOME}"/"${1}" -size 0 -type f -exec rm {} +
Run Code Online (Sandbox Code Playgroud)
测试
列出testd下的所有空文件:
$ find "${HOME}"/testd -size 0 -type f
/home/jay/testd/empty_file.txt
Run Code Online (Sandbox Code Playgroud)
使用脚本删除空文件:
$ chmod +x clearner.sh
$ ./clearner.sh testd
Run Code Online (Sandbox Code Playgroud)
检查空文件:
$ find "${HOME}"/testd -size 0 -type f
$
Run Code Online (Sandbox Code Playgroud)