我需要檢查具有特定擴展名的文件是否存在,以及它是否爲空。 問題是我不知道文件的名稱,只是擴展名和路徑。Bash腳本 - 檢查文件是否存在
這裏我有一個響亮的名字
FILE="/Users/test/my.out"
if [[ -f $FILE && -s $FILE ]] ; then echo "EXIST"; fi
使用
FILE="/Users/test/*.out"
不要工作
我需要檢查具有特定擴展名的文件是否存在,以及它是否爲空。 問題是我不知道文件的名稱,只是擴展名和路徑。Bash腳本 - 檢查文件是否存在
這裏我有一個響亮的名字
FILE="/Users/test/my.out"
if [[ -f $FILE && -s $FILE ]] ; then echo "EXIST"; fi
使用
FILE="/Users/test/*.out"
不要工作
解決方案嘗試
FILE=$(ls "Downloads/*.zip" 2>/dev/null)
只適用,如果只有一個文件。
這個作品,謝謝!如果我在while循環中進行檢查,如果文件還不存在,則會顯示輸出「ls:/Users/test/*.out:No such file or directory」。有什麼辦法可以避免這種輸出? – user3472065
看我的編輯,2>/dev/null抑制錯誤。順便說一句,我想這是一個非常糟糕的hackjob ... – Mathias
是啊,不要這樣做... –
我建議你使用數組,如果有多個文件:
arr=(/Users/test/*.out)
if ((${#arr[@]} > 0)) && [[ -s "${arr[0]}" ]]
then
...
fi
您可以使用數組或使用循環兩種使用@羅布麻的解決方案:
dir=/users/test
for file in "${dir}"/*.out; do
break
done
if [ -f "${file}" ] && [ -s "${file}" ]; then
echo "found a regular, non-empty .out file: ${file}"
fi
我覺得這應該這樣做:
if [ -f ${var} ]; then
if [ -s ${var} ]; then
echo "Found $var"
fi
fi
我認爲你沒有正確地閱讀這個問題。 –
如果您有多個匹配該模式的文件,該怎麼辦?試試'FILE = $(ls/Users/test/* .out)' – RedX
最初的條件是在這個文件夾中只有一個文件.out – user3472065