複数のファイルが存在するかどうかを確認するには?

複数のファイルが存在するかどうかを確認するには?

/tmp/bbsnode1ファイルを見つけてファイルがある場合は、削除するシェルスクリプトがあります。私がやりたいことは、ファイル(/tmp/bbsnode2、、、/tmp/bbsnode3/tmp/bbsnode4が複数ある場合はすべて削除することです。ただし、すべて存在する場合のみ削除してください。

これが私が今まで持っているものです:

if [ -f /tmp/bbsnode1 ]
then
/usr/bin/rm /tmp/bbsnode1
fi

ベストアンサー1

私はシェルを使用します機能スクリプトの代わりにこれを行うには、次のようにします。

rm-all-or-none() {
  for f; do
    [ -f "$f" ] ||
      { printf '%s is not an existing file, no files removed\n' "$f" >&2
        return 1;}
  done
  rm -fv -- "$@"
}

次に、globの代わりに中かっこ拡張を使用して呼び出します。 Globは次のファイルにのみ拡張されます。存在するただし、この場合は、次の場合にのみファイルを指定して削除しようとします。みんなその中には以下が含まれます:

rm-all-or-none /tmp/bbsnode{1..4}

より長いバージョン:

rm-all-or-none() {
  for f in "$@"; do
    if [ -f "$f" ]; then
      :
    else
      printf '%s is not an existing file, no files removed\n' "$f" >&2
      return 1
    fi
  done
  rm -fv -- "$@"
}

また見なさい:

おすすめ記事