0

複製

FileA以外のフォルダ内の他のすべてを削除できません

これに少し似ていると思います:delete [^ Music]

ただし、動作しません。

4

3 に答える 3

4

次のコマンドを ~/.bashrc に追加します

shopt -s extglob 

次の方法で、Music フォルダーを除くフォルダー内の他のすべてを削除できるようになりました。

rm -r !(Music)

コマンドに注意してください。強力ですが、危険でもあります。

コマンドで常にテストすることをお勧めします

echo rm -r !(Music)
于 2009-03-15T15:24:58.453 に答える
2

コマンド

rm (ls | grep -v '^Music$')

動作するはずです。「ファイル」の一部がサブディレクトリでもある場合は、それらも再帰的に削除します。

rm -r (ls | grep -v '^Music$')

警告:rm -r危険な場合があり、誤って多くのファイルを削除する可能性があります。何を削除するかを確認したい場合は、次の出力を見てみてください。

ls | grep -v '^Music$'

説明:

  • このlsコマンドはディレクトリの内容を一覧表示します。引数がない場合は、デフォルトで現在のディレクトリになります。
  • パイプ記号は|出力を別のコマンドにリダイレクトします。の出力がこのようにリダイレクトされると、対話型端末で入力したls場合に表示されるような列形式ではなく、ファイル名が 1 行に 1 つずつ出力されます。ls
  • このgrepコマンドは、行をパターンに一致させます。-vスイッチは、パターンに一致しない行を印刷することを意味します。
  • このパターン^Music$は、Music で始まり、Music で終わる行、つまり文字列 Music のみに一致することを意味します。^(行頭) および$(行末) 文字の効果は、の-xようにスイッチでも実現できgrep -vx Musicます。
  • 構文command (subcommand)は、あるコマンドの出力を取り、それをコマンドライン引数として別のコマンドに渡すための fish の方法です。
  • コマンドはrmファイルを削除します。デフォルトでは、ディレクトリは削除されませんが、-r("recursive") オプションはそれを変更します。

man commandと入力すると、これらのコマンドなどについて学ぶことができますcommand

于 2009-01-17T18:23:39.460 に答える