ディレクトリ内のフォルダを除くすべてのファイルを削除する

ディレクトリ内のフォルダを除くすべてのファイルを削除する

私は初めてターミナルベースのコマンドに触れましたが、リモートとローカルの間でrsyncコマンドを実行したときに、誤って/serA/items/count01の代わりに間違った場所(/serA/itemsなど)にファイルを「コピー」しました。

したがって、現在の/ itemsディレクトリは、count01フォルダとcount01と同じ内容を持つさまざまなエントリで構成されています。

count01フォルダに触れずに誤ってコピーしたアイテム(他のファイル形式)をすべて削除する簡単な方法はありますか? 「rm -f」を使用できますが、ファイルが100個を超えるので退屈なプロセスです。

また、これらのファイルは他の人の名前になっており、権限がロックされているように見えるため、手動で削除することはできません。

答え1

次のファイルやフォルダがたくさんあります。

$ ls
count01  file_a  file_b  file_c  folder_a  folder_b  folder_c

以下を除くすべてのアイテムを削除するにはcount01:

$ rm -r !(count01)
$ ls
count01

答え2

find . -maxdepth 1 -type f -delete

ただし、削除権限がないと機能しません。

答え3

次のようにpiplineコマンドを使用することをお勧めします。

find "actual/path" -type f | grep -v "actual/path/plus/foler/to/conserve" |xargs rm

パート1:次のコマンドを使用して、物理ディレクトリ内のすべてのファイルを見つけます。-type f

パート2:保存するパスを除く-v

最後の部分:最初の部分と2番目の部分に応答するすべてのファイルを削除します。

簡単に言えば、次のことができます。

cd
find . -type f | grep -v /serA/items/count01 |xargs rm

このコマンドを使用すると、パスに含まれるすべてのファイルとフォルダが保存されます。本当にすごいですね!

答え4

注文する:

ls -ltr|grep "^-"|awk '{print $9}'|xargs rm

常にステップバイステップの規則に従ってください。わかりやすく説明も必要ありません。しかし、上記のコマンドを実行するには権限が必要であるというTom Hunterのコメントに同意してください。

関連情報