「today.md」という名前ではなくファイルを削除する

「today.md」という名前ではなくファイルを削除する

私の作業ディレクトリに一連のマークダウンファイルがあります。

$ ls *.md
csv_reader.md  egrep.md  find.md  found_pdfs.md  osPathSep_help.md  readme.md  smtplib_help.md  today.md

「today.md」以外のアイテムを削除したいです。

#!/usr/local/bin/bash
for i in ./*.md ; do
    if [[ $i != "today.md" ]]; then
        echo $i
    fi
done

それを実行して取得

$ bash bash/remove_files.sh
./csv_reader.md
./egrep.md
./find.md
./found_pdfs.md
./osPathSep_help.md
./readme.md
./smtplib_help.md
./today.md

ただし、構造化されたコマンドはコマンドラインでは便利ではありません。より短いコマンドでこれらのタスクを実行するにはどうすればよいですか?

ベストアンサー1

否定一致を使用する(必須ですが既にshopt -s extglob設定されている可能性があります):

rm !(today).md

ls(結果を確認するのではなく、最初に使用してくださいrm。)

強力ですextglob、あなたもできます。

rm !(yesterday|today).md

両方のファイルを保持したい場合。

おすすめ記事