
私は初めてターミナルベースのコマンドに触れましたが、リモートとローカルの間で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のコメントに同意してください。