와일드 카드를 사용하여 시작 또는 끝 부분을 제외한 문자열이 포함 된 문자열을 포함하는 파일을 삭제하는 방법은 무엇입니까?파일 이름에 특정 문자열이있는 파일 삭제
저는 아마추어가 우분투를 시작한 지 한 달도 안됩니다.
와일드 카드를 사용하여 시작 또는 끝 부분을 제외한 문자열이 포함 된 문자열을 포함하는 파일을 삭제하는 방법은 무엇입니까?파일 이름에 특정 문자열이있는 파일 삭제
저는 아마추어가 우분투를 시작한 지 한 달도 안됩니다.
단일 확장 패턴으로는 가능하지 않습니다. 대신 필터링 grep
를 사용할 수 있습니다
ls -d '*foo*' | egrep -v '^foo|foo$' | xargs rm
그래서 foo
를 포함하는 ls
목록의 모든 다음 egrep
가 시작/끝 부분에 일치와 파일을 제거하고, 마지막으로 xargs
각에 (이 경우 rm
) 명령을 실행 나머지.
The dangerous thing about this technique 파일 이름에 줄 바꿈이나 별표와 같은 특수 문자가 포함될 수 있으므로 사용상의 위험은 따릅니다.
rm ?*foo?*
는 foo에 포함 된 파일은 삭제되지 않습니다 적어도 하나 개의 전후 문자, 그래서 "는 foobar"와 "barfoo"가 "barfoobar"반면 될 것입니다,이 있다는 것을 제공 제거합니다. 예방 조치로
는 잘못된 물건을 삭제되지 않도록하기 위해ls ?*foo?*
첫
을한다. 그리고 우연히 어떤 공백도 포함하지 않도록주의하십시오. rm? * foo? *은 거의 확실하게 매우 나쁩니다. 보호를 제공하려면 따옴표로 묶으십시오. 따라서rm "?*foo?*"
어떨까요 foobarfoobarfoo – femchi
어가 오래된 foobarfoobarfoo 역설 :-) 나는 OP가 그 삭제를 원할 것이라고 생각하고 있습니다. – pinoyyid
:))))이 문제에 대한 해결책이 있습니까? – femchi