あなたに利用できるいくつかの比較的エレガントなオプションがあります。
あなたのフォルダに削除するタイプのファイルがあるかどうかをチェックする関数で、rm
をラップすることです。あなたはワイルドカードに一致するすべてのファイルがある場合this questionごとに、チェックするためにls
を使用することができます。
#!/usr/bin/env bash
rm_check() {
if ls *."${1}" 1> /dev/null 2>&1; then
rm *."${1}"
echo "All *.${1} files have been deleted"
else
echo "No *.${1} files were found"
fi
}
read -p "are you sure you want to delete the files? Y/N " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm_check torrent
rm_check zip
rm_check deb
fi
このバージョンでは、それはすべてがあなたが当初予定の道をレイアウトしているので、いいです。
私の意見では、よりクリーンなバージョンは、あなたのパターンに合ったファイルだけを見ることになります。私はコメントで示唆したように、あなたは、単一のfind
のコマンドでそれを行うことができます:
#!/usr/bin/env bash
read -p "are you sure you want to delete the files? Y/N " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
find -name '*.torrent' -o -name '*.zip' -o -name '*.deb' -delete
echo "all those files have been deleted............."
fi
この方法は、あなたのスクリプトが非常に短くなります。この方法の唯一の可能性のある欠点は、どのファイルタイプが欠落しているかを報告しないことです。
'find'コマンドについて知っていますか? –
番号。私はまだbashを初めて使っています – mots
'find -name '* .torrent' -o -name '* .zip' -o -name '* .deb' -delete'はあなたの問題を完全に回避しますが、そうでないかもしれません。指定されたタイプのファイルがない場合には報告しないため、あなたが望むものです。 –