/tmp/file.1
私たちは、または/tmp/file.43.434
背中/tmp/file-hegfegf
を持つことができます。
それでは、bashで存在をどのように確認しますか/tmp/file*
?
私たちは次のように努力します
[[ -f "/tmp/file*" ]] && echo "file exists"
しかし、上記の方法は機能しません。
どうすれば修正できますか?
答え1
find
このケースを識別するためにorループを使用しますfor
。
例#1 find
(GNU拡張を使用した検索スペースの制限):
# First try with no matching files
[ -n "$(find /tmp/file* -maxdepth 1 -type f -print -quit)" ] && echo yes || echo no # "no"
# Create some matching files and try the same command once more
touch /tmp/file.1 /tmp/file.43.434 /tmp/file-hegfegf
[ -n "$(find /tmp/file* -maxdepth 1 -type f -print -quit)" ] && echo yes || echo no # "yes"
for
ループ付きの例#2
found=
for file in /tmp/file*
do
[ -f "$file" ] && found=yes && break
done
[ yes = "$found" ] && echo yes || echo no # No files "no", otherwise "yes"