하위폴더삭제중 2개를 제외하고 삭제하려면 어떻게 해야하나요 ?

xoduddk123의 이미지

rm -rf `ls | find /root/aaa/* -name ABC -prune -o -print`

위와같이 /root/aaa/ 의 하위 파일들중 ABC라는 폴더를 제외하고는 전부다 삭제하는 쉘스크립트는 사용하고있습니다.

그런데 여기에 ABC라는 폴더와 123이라는 폴더 2개를 남겨두고 삭제하고싶다면

저 위의 스크립트 중에 어떻게 추가시켜야 해당하는 작업을 할수있나요??? 엉청 간단할거같은데. . . .

kombo67의 이미지

find . | grep -v 'ABC$' | xargs rm -rf ( 테스트서버에서 테스트 해봄 ksh )

의미는 다 아시겠지만 혹시나 해서

grep -v // 인자값을 제외하고
'ABC$' // 끝이 ABC 인 것. 필드의 끝을 의미.
drwxr-xr-x 5 bin bin 4096 Jun 15 15:29 ..
drwxr-xr-x 2 root system 256 Jun 15 17:51 ABC

다른 예로 ^d 라 함은 필드의 앞이 d인것 ( 디렉터리 )
이런 제 생각일뿐.. 꼭 테스트 거치시길.. ( 제가 해보긴 했어도 꼭.. )
xargs 앞에 인자를 받아 처리함.
xargs rm -rf // 앞의 결과값을 받아 전부다 삭제.

결론. ABC인 ( 파일이든 디렉이든.. , 구별을 안해놧기 떄문에 ) 것을 빼고
나머지 파일 및 디렉 전부다 삭제.

테스트 내용

find . | grep -v 'ABC$' | xargs ls
./ABC/ABCD ./er/45 ./gb/cv ./qwe/dsa ./zxc/sod ./zzzz

.:
ABC as asd er gb qwe zxc zzzz

./as:

./asd:

./er:
45

./gb:
cv

./qwe:
dsa

./zxc:
sod
#
# find . | grep -v 'ABC$' | xargs rm -rf
rm: cannot remove '.' or '..'
# ls -latr
total 8
drwxr-xr-x 5 bin bin 4096 Jun 15 15:29 ..
drwxr-xr-x 2 root system 256 Jun 15 17:51 ABC
drwxr-xr-x 3 user1 staff 256 Jun 15 17:51 .
# ls -la R
R not found
# ls -laR
total 8
drwxr-xr-x 3 user1 staff 256 Jun 15 17:51 .
drwxr-xr-x 5 bin bin 4096 Jun 15 15:29 ..
drwxr-xr-x 2 root system 256 Jun 15 17:51 ABC
./ABC:
total 0
drwxr-xr-x 2 root system 256 Jun 15 17:51 .
drwxr-xr-x 3 user1 staff 256 Jun 15 17:51 ..
#

kombo67의 이미지

게시글을 완전히 이해하지 못하고 글을 적었네요 ...ㅜㅠㅜㅠ
관련 없이 글을 적어버려 삭제하고 싶은데 편집기능에서 삭제방법을 몰라서
따로 이렇게 글을 올립니다 .ㅜ

unipro의 이미지

(1) 2개의 하위 폴더를 적절한 곳으로 옮깁니다.(mv 명령 사용) 하위 폴더의 상위 경로를 적절한 곳에 기록합니다.
(2) 디렉토리 전체를 삭제합니다.
(3) 하위 폴더의 상위 경로를 생성하고(mkdir -p 사용), 2개의 하위 폴더를 복구 시킵니다.(mv 명령 사용)

내 블로그: http://unipro.tistory.com

cinsk의 이미지

원하는 답변은 rm -rf `ls | find /root/aaa/* -name ABC -prune -o -name DEF -prune -o -print`일 테지만, 조건에 맞는 파일이 많을 경우, rm이 실패할 겁니다. 차라리,

find /root/aaa -name ABC -prune -o -name DEF -prune -o -delete 또는
find /root/aaa -name ABC -prune -o -name DEF -prune -o -exec rm {} \;가 낫습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.