많은 하위 디렉토리가있는 거대한 디렉토리가 있습니다. 하지만 일부 하위 디렉토리 이름은 번이거나 또는 이상한 것 같은 이상한 문자입니다. 디렉토리는 다음과 같습니다 : 디렉토리의리눅스에서 특정 디렉토리를 삭제하는 방법
/
/a,/b,/1,/0,/$,/β
/a/c,/1/a,/b/β
깊이는 3이고, 나는 모든 디렉토리 26 letters (a-z)
에없는 그 이름을 제거하고 싶습니다. Remove ./1, ./$, ./β ...
및 /a/1, /b/β, /a/b/2
.
나는 결합하려고 find
및 grep
및 parallel (A gnu xargs)
grep
이, 이상한 작동 내가 grep [a-z]
를 사용하는 경우, 또한 예를 들어, a with a circle on the top
의 이상한 편지를 포함합니다.
find . -type d -maxdepth 2|grep -v '\/[a|b|c|d|e|f|g|h|i|j|K|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z]+/[a|b|c|d|e|f|g|h|i|j|K|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z]+'|parallel -X -r rm -r
을하지만 그것은 단지 모든 파일을 제거합니다 그래서, 나는이를 wirte! grep 출력은 .
디렉토리와 하위 디렉토리 인 /p
을 포함하고 있습니다. 삭제하지 않으려 고하지만 정규 표현식에 따르면이 파일은 포함되지 않아야한다고 생각합니다.
왜 이런 일이 발생합니까? 그리고 어떻게 그 디렉토리를 제거 할 수 있습니까?
적어도 실행 파이프는 쓸모 없으며, insi 인 캐릭터는 없습니다. de []가 수락됩니다. –
그것은'+'가 리터럴'+ '부호를 찾기 때문에 발생합니다. 당신의 디렉토리 이름은'+'를 포함하지 않으므로,'grep -v'는 그 모든 것을 통과시킵니다. – melpomene
'\ +'를 사용하면 리터럴 '+'가 대신 검색됩니다. – Ziu