我试图编写一个bash脚本来识别目录中的空文件。为了便于使用,我计划将其保存到主目录并从那里运行它。请注意,它不是递归的。试图避免使用find命令,因为它可能会变得混乱。如果你有一个比测试更好的建议,我会全力以赴。
我会说我是bash脚本的新手,并且通常会在Python中执行此操作,但我希望保持与我们在此处所做的事情保持一致。
输出应该是任何空文件和计数器的列表。下面是我到目前为止所做的,但我并没有返回空文件,尽管在"测试" 。目录
fileCount=0
for item in *; do
if test -f "$item" && ! test -s "$item"
then
fileCount=$((fileCount+1))
echo $item
else
continue
fi
done
echo "Number of empty files: " $fileCount
如果我想修改它以获取参数(用户指定的目录),我该怎么做呢?以下是我对其进行修改的方法,但我认为我的变量存在问题。
fileCount=0
echo "Please enter a directory: "
read directory
for item in $directory; do
if test -f "$item" && ! test -s "$item"
then
fileCount=$((fileCount+1))
echo $item
else
continue
fi
done
echo "Number of empty files: " $fileCount
答案 0 :(得分:3)
break
结束循环,因此您在第一个非空文件处停止计数。你想要continue
,它进入循环的下一次迭代。
或者你可以写:
if test -f "$item" && ! test -s "$item"
then
fileCount=$((fileCount+1))
fi
答案 1 :(得分:2)
实际上,find
非常简单。
find . -type f -size 0
为您提供当前目录中的所有空文件。
find . -type f -size 0 | wc -l
为您提供空文件的数量。
即使使用隐藏文件也可以。
如果您只想在当前目录中列出空文件,只需添加-maxdepth 1
选项即可查找。
答案 2 :(得分:1)
find PATH_TO_SEARCH -maxdepth -type f -empty | nl
示例:
find proj/mini/forum -maxdepth 1 -type f -empty | nl
1 proj/mini/forum/resolv
2 proj/mini/forum/five
3 proj/mini/forum/0
4 proj/mini/forum/FactorialComplexit.java
5 proj/mini/forum/-temp.html
6 proj/mini/forum/index.-temp.html
我看不出任何凌乱。因为在几乎所有情况下,文件名不会跨越多行,而我不得不承认它是可能的,nl似乎是一个足够好的工具来测量满足的空文件数。