次の場所にあるすべてのごみ箱ファイルを空にしようとしています。/nfshome/*/.local/share/Trash/files
find
しかし、これを行う正しいコマンドが見つからないようです。
"trash"ディレクトリにファイルとディレクトリを見つけることができます。
$ sudo find /nfshome/*/.local/share/Trash/
/nfshome/9916091/.local/share/Trash/
/nfshome/9916091/.local/share/Trash/files
/nfshome/9916091/.local/share/Trash/info
/nfshome/9918452/.local/share/Trash/
/nfshome/9918452/.local/share/Trash/expunged
/nfshome/9918452/.local/share/Trash/files
/nfshome/9918452/.local/share/Trash/files/mods.2
... plus lots more
しかし、ディレクトリに深く入ると、files
期待した結果は得られません。
$ sudo find /nfshome/*/.local/share/Trash/files/
/nfshome/admin/.local/share/Trash/files/
結果は1つだけです。結果は現在ログインしているユーザーです。残りのジャンクファイルが見つからないのはなぜですか?たとえば、最初の検索からの2つのことは何ですか?
/nfshome/9918452/.local/share/Trash/files
/nfshome/9918452/.local/share/Trash/files/mods.2
答え1
*
始める前にシェルが拡張されていますfind
。シェルを実行する必要はありませんsudo
。多くの項目を一致させるには、/nfshome/*/.local/share/Trash/
多くのディレクトリにアクセスする必要がありますshare
。確かにそうです。最初のケースでは動作します。
ただし、多くの項目を一致させるには、/nfshome/*/.local/share/Trash/files/
シェルが多くのTrash
ディレクトリにアクセスする必要があります。前提:シェルは1つのディレクトリにのみアクセスできます。他のディレクトリに存在するかどうかをTrash
知る権限がありません。files/
Trash
最初のケースでは、find
多くのディレクトリを取得し、Trash
すべての権限を持っていますsudo
。だからそれはそれらすべてを見つけることができますfiles/
。 2番目のケースでは、1つのディレクトリfind
だけがパラメータと呼ばれますfiles/
。
読み取り権限、実行権限がないか、両方がないかをテストできます。これらの詳細は私の主なポイントを変えません。シェルは特定のディレクトリを「検出」することはできませんが、sudo find …
すべてのディレクトリを見つけることは許可されます。
答え2
@KamilMaciorowskiが言ったように
解決策:
ルートとして実行しますbash
。
sudo bash -c 'find /nfshome/*/.local/share/Trash/'
〜で行うfind
デフォルトのディレクトリを見つけて使用するように指示します-path
。
.local
たとえば(すべてのサブディレクトリで見つけることができるので、正確ではありません)
sudo find /home -path "*/.local/share/Trash/*"
より良いもの。正規表現に変換します(上記と同じ)。
sudo find /home -regex ".*/[.]local/share/Trash/.*"
その後、ホームディレクトリに固定します。
sudo find /home -regex "/home/[^/]+/[.]local/share/Trash/.*"