Sav*_*hew 8 bash shell-script wildcards files
我想编写一个脚本来查找具有特定扩展名的文件。我已经做了这么多:
#!/bin/bash
file="/home/Savio/Dsktop/check/*.csv"
file1="/home/Savio/check/*.txt"
if [[ -f "$file" && -f "$file1" ]];
then
echo " found."
else
echo "not found."
fi
Run Code Online (Sandbox Code Playgroud)
其中check文件夹包含子文件夹。如果有任何错误,请纠正我
如果你不想递归,你可以这样做
export DIR=/home/Savio/Dsktop/check
if ls ${DIR}/*.txt &>/dev/null && ls ${DIR}/*.csv &>/dev/null
then
echo "Found."
else
echo "Not found."
fi
Run Code Online (Sandbox Code Playgroud)
或者,在perl:
perl -e '
$DIR="/home/Savio/Dsktop/check";
@a= glob "${DIR}/*.txt";
@b= glob "${DIR}/*.csv";
print @a && @b ? "Found.\n" : "Not found.\n"
'
Run Code Online (Sandbox Code Playgroud)
如果您确实想要递归,其他答案中提出的解决方案将起作用。find您可以通过在找到第一个匹配项后停止来使其运行得更快:
export DIR=/home/Savio/Dsktop/check
CSV=$(find "$DIR" -name *.csv|head -n1)
TXT=$(find "$DIR" -name *.txt|head -n1)
[ ! -z "$CSV" ] && [ ! -z "$TXT" ] && echo Found || echo Not found
Run Code Online (Sandbox Code Playgroud)
参考