bash-pwd의 파일이 아닌 모든 디렉토리 및 내용을 제거하십시오.


19

pwd에서 모든 디렉토리를 제거하고 싶지만 pwd에 파일을 남겨 두십시오. 내 비밀번호의 내용이 다음과 같은 경우 :

mydir1
mydir2
myfile1
myfile2

그런 다음 그냥 남아 있고 싶습니다

myfile1
myfile2

나는 내가 사용해야한다고 가정한다. rm -r -i

제가 맞습니까?

답변:


10

아무것도 지정하지 않았으므로 "피연산자가 누락되었습니다"라는 메시지가 표시되지 않습니다. A는 퍼팅 *파일도 메시지를 표시합니다.

나는 시도 할 것이다 :

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

(가) mindepth 1제외됩니다 .결과에서부터는 maxdepth 1어쨌든 (때문에 경고를 생성) 삭제 얻을 것이다 디렉토리에서 일을하려고 제외됩니다. 그러나 실제로 몇 가지 "무고한"경고에 동의하면 둘 다 생략 할 수 있습니다.


21

나는 이것을 어딘가에서 찾았다.

rm -r */

가장 쉬운 방법 인 것 같습니다. 귀하의 예를 들어, 각 파일을 확인해야합니다 .5 개의 파일이 있으면 OK이지만 더 큰 파일 구조에서는 대화 형 모드가 갈 수 없습니다 ... 제안 사항처럼 중요한 정보라면 지원...


1
그것은 또한 여기에서 바람직하지 않은 상징적 인 링크를 따라갈 것입니다.
JdeBP

8

사용하다

rm -rf ./*/

대화식 모드를 피하고 로컬 디렉토리의 디렉토리 만 삭제합니다.


으로 JdeBP 지적마틴의 매우 비슷한 대답 현재 (최상위) 디렉토리를 다른 디렉토리에 대한 기호 링크가 포함되어있는 경우, 그들은 또한 (그들은 현재 디렉토리 또는 하위없는 경우에도) 삭제됩니다.
Scott

3

이와 같은 것이 작동해야합니다.

find /path -type d -exec rm -rf '{}' \;

-type d는 디렉토리 만 찾습니다.


-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.