
txt
現在のディレクトリ内のすべてのファイルを削除する方法を知っていますrm *.txt
。現在のディレクトリからファイルを除くすべてのファイルを削除する方法を知っている人はいますかtxt
?
答え1
あなたはそれを使用することができますfind
:
find . -type f ! -name '*.txt' -delete
またはbashの拡張ワイルドカード機能:
shopt -s extglob
rm *.!(txt)
またはzshから:
setopt extendedglob
rm *~*.txt(.)
# || ^^^ Only plain files
# ||^^^^^ files ending in ".txt"
# | \Except
# \Everything
答え2
ただ全部削除したいなら文書'*.txt'に加えて、次のコマンドを使用できます。
$ find . -type f ! -name "*.txt" -exec rm -rf {} \;
しかし、削除したい場合目次ファイルには次のものを使用できます。
$ find . ! -name "*.txt" -exec rm -r {} \;
答え3
これを行う方法はいくつかあります。しかし、最も簡単な方法は(bash)です。
shopt -s extglob
rm !(*.txt)
答え4
1つの解決策は次のことを行いませんfind
。
mv dir/*.txt otherdir/
rm -r dir
mv otherdir dir
これはあらゆる種類のシェルで動作します。