리눅스에서 더 빨리 찾는 방법


0

^ M과 같은 재미있는 캐릭터가있는 디렉토리가 있습니다. 실수로 만들어 졌으므로 삭제하고 싶습니다.

디렉토리를 나열하고 ls -iql해당 inode 번호를 기록한 다음 inode 번호로 검색 하여 디렉토리 를 삭제하려고합니다.

find . -inum 7990028 -exec rmdir -i {} \;

그러나 명령이 너무 느립니다. 수백 개의 디렉토리 만 있지만 디렉토리 안에는 많은 파일이 있습니다. find 명령이 파일을 통해 검색해야한다고 생각합니다.

이것을 어떻게 향상시킬 수 있습니까?


또한 명령이 디렉토리를 삭제하지 못합니다 .... 어떻게 제대로 얻을 수 있습니까?
lamwaiman1988 년

왜 inode로 디렉토리를 찾고 있습니까?
Ignacio Vazquez-Abrams

나는 재미있는 캐릭터가 무엇인지 모르기 때문에. 내가 그냥 "ls"하고 "?"가되면 보이지 않습니다. "ls -q"일 때 그러나 "?"가 아닙니다.
lamwaiman1988 년

'cat -v'또는 'cat -A'를 통해 ls의 출력을 파이프하여 '재미있는 문자'가 무엇인지 보여줍니다. 그러나 귀하의 예에서, 그들은 캐리지 리턴 (^ M)입니다. 'rm -rf "* {CTRL-V} {CTRL-M}"'으로 모두 제거 할 수 있습니다. 그러나 먼저 확인하기 위해 'ls "* {CTRL-V} {CTRL-M}"'으로 실행했습니다. '-rf'는 매우 강력하다 (일명 위험)
lornix

답변:


1

. 명령에서 "현재 디렉토리에서 검색"을 의미합니다. 따라서 빨리 만들려면 삭제하려는 디렉토리 위의 디렉토리에 있어야합니다. 그런 다음 검색 깊이를 현재 디렉토리로 제한하고 디렉토리별로 만 제한 할 수도 있습니다.

find . -inum 7990028 -type d -maxdepth 1 -exec rmdir -i {} \;

aix에는 maxdepth 옵션이 없습니다. 디렉토리 위의 디렉토리에 이미 있습니다. 추신. aix에는 -depth 옵션이 있지만 작동하지 않습니다.
lamwaiman1988 년

아, 에이스 좋아, -type d의지가 큰 차이를 만들 것입니다.
Paul

여전히 매우 느립니다.
lamwaiman1988 년

1

문제가있는 문자는 인쇄 할 수 없다는 것을 알고 있으므로 간단히

rm -rf *[^[:print:]]*

0

에 포함되어있는 모든 파일 이름을 삭제하는 것이 훨씬 쉽습니다 ^M.

rm -rf *CtrlVCtrlM*


실제로 나는 캐릭터가 무엇인지 모르겠습니다. "ls -q"를하면 "?" 그들의 뒤에, 나는 "?"를 시도 이미.
lamwaiman1988 년

쉘에 자동 완성 기능이 있습니까? 탭을 사용하여 디렉토리 이름을 완성 할 수 있습니까?
Paul

@ gunbuster363 : 그렇다면 범위를 대신 사용하십시오. *[Ctrl-V Ctrl-A Ctrl-V Ctrl-B ... Ctrl-V Ctrl-]]*
Ignacio Vazquez-Abrams

잘못된 공간은 하루를 망칠 수 있으므로 인용을 권장합니다.
lornix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.