Bash
用於檢查是否存在具有特定副檔名的一個或多個文件的 Shell 腳本?
我想編寫一個腳本來查找具有特定副檔名的文件。我做了這麼多:
#!/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
文件
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
或者,在
perl
:perl -e ' $DIR="/home/Savio/Dsktop/check"; @a= glob "${DIR}/*.txt"; @b= glob "${DIR}/*.csv"; print @a && @b ? "Found.\n" : "Not found.\n" '
如果您確實想要遞歸,則其他答案中提出的解決方案將起作用。
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
參考
- Stephane Chazelas 對如何在第一次匹配後停止查找命令的出色回答?