aの使用*
が事実上避けられない状況がたくさんありrm -rf *
ます-例えば、何千ものサブフォルダーとファイルを保持するフォルダー内。
しかし、rm
コマンドから1つまたは2つのファイルまたはフォルダーのみを除外する場合はどうでしょうか。私は自分のやり方をグーグルで調べましたが、ここでfind . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;
述べたような非常に複雑なソリューションしか見つかりませんでした。
より簡単な方法でこれを行う可能性はありfind
ますか?例えばrm -rf --exclude='one' --exclude='two' --exclude='three' *
、rsyncのようなものrm -rf -e 'one','two','three' *
ですか?
たぶんから物事を除外するためにも、一般的な可能性*
(のようなので、他のコマンドはcp
、mv
...自分自身を実装する必要はありませんか)?のようなもの*{'one','two','three'}
ですか?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three
、明示的に何かを除外する可能性を与えるソリューションを好むでしょう*
。確かに、ファイルを別の宛先に移動またはコピーすることがオプションではない状況があります。
find
は、この--delete
オプションで使用します(rm
各ファイルに対して実行する必要はありません。これは不必要なオーバーヘッドです)。