我正在用cshell程序编写代码,如果目录中文件类型不止一种,我想采取一些措施。
我已经尝试过以下方法:
if "$(find . -name '*_type1.DAT' | wc -l)" >1 then
echo "TRUE"
else echo "FALSE"
endif
在哪里找到。 wc -l的-name命令,计算有_type1.DAT个文件终止的文件数。我希望这部分可以用作整数,以进行比较,如果大于1,则可以执行一些操作。
有人知道是否有可能,或者有更好的主意做出此条件声明?
答案 0 :(得分:0)
如果可以避免,请don't use csh。如果这是旧版代码,则应使用以下代码:
if ( `find . -name '*_type1.DAT' -printf "x\n" | head -2 | wc -l` > 1) then
echo "TRUE"
else
echo "FALSE"
endif
说明:
$(xyz)
相同。 -printf "x\n"
确保每个条目仅打印一行。即使某些文件名包含换行符,也会打印一行。head -2
文件,find
将迫使"*_type1.DAT"
提前退出。这是不完善的,find
在注意到其stdout已关闭之前可能会继续处理很多行。