다음 위치에 있는 모든 휴지통 파일을 비우려고 합니다./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/
결과는 하나뿐입니다. 결과는 현재 로그인된 사용자입니다. 나머지 정크 파일을 찾을 수 없는 이유는 무엇입니까? 예를 들어 첫 번째 검색에서 나온 이 두 가지는?
/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
디렉터리에 액세스해야 합니다. 가정: 쉘은 하나의 디렉토리에만 액세스할 수 있습니다 . 다른 디렉토리에 존재하는지 Trash
알 수 있는 권한이 없습니다 .files/
Trash
첫 번째 경우에는 find
많은 디렉토리를 획득 Trash
하고 모든 권한을 갖습니다 sudo
. 그래서 그것은 그들 모두를 찾을 수 있습니다 files/
. 두 번째 경우에는 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/.*"