私の作業ディレクトリに一連のマークダウンファイルがあります。
$ 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
両方のファイルを保持したい場合。