2017-12-12 12 views
0

리눅스에서는 모든 서브 폴더 구조가 동일한 폴더 그룹이 있습니다. 예 :여러 부모 폴더에서 하위 폴더를 일괄 제거

폴 데라/X/Y/Z /은 File2.txt

폴 데라/X/Y/Z/file2.txt

FolderB/X/Y/Z /은 File2.txt

FolderC /x/y/z/file1.txt

일괄 처리를 실행하여 하위 폴더 중 하나를 제거하고 모든 파일과 폴더는 변경하지 않고 그대로두고 싶습니다. 예 :

폴 데라/X/z /은 File2.txt

폴 데라/X/z/file2.txt

FolderB/X/z /은 File2.txt

: I 폴더 "Y"를 제거한다면

FolderC/X/Z /은 File2.txt

내가 해봤

함께 찾아 MV의 조합을 가하고 있지만, 확실히 당신은 하위 폴더 중 하나를 제거 할 고려 바로

답변

1
find . -name y -type d -exec sh -c ' 
    for d; do echo mv "$d"/* "$d"/..; echo rmdir "$d"; done' _ {} + 

예상 결과가이면 제거하십시오.

+0

대단히 감사합니다. 대단히 감사합니다. – HaemEternal

0

그것을 얻을 수 없다 , 그러나 모든 파일과 폴더를 변경하지 않고 그대로두면 다음 작업을 수행 할 수 있습니다. 그것은 정확한 해결책이 아니며, 당신을 위해 일할 수있는 종류의 속임수입니다. 나는 내 컴퓨터에서 여러 번 해왔다.

하위 폴더의 내용을 상위 폴더로 반복적으로 복사 한 다음 상위 디렉터리로 이동 한 다음 마지막으로 하위 폴더를 재귀 적으로 제거 할 수 있습니다.

  1. 트래버스는에가/하위 폴더

  2. 복사

    $ 및 CP -R * ..

  3. 상위 폴더에 재귀 적으로 모든 내용/

    $ CD의 경로를 하위 폴더로

  4. 상위 폴더로 이동 ,

    $ CD를 ..

  5. 제거 재귀 적으로 하위 폴더

    $ RF RM은 하위 폴더/

, 당신은 다음, 폴더 Y가 말

 

    $ cd path/to/folder/y 
    $ cp -R * .. 
    $ cd .. 
    $ rm -rf y/ 

Batch Process 실행시 find 명령어를 이용하여 하위 폴더의 경로를 알아낼 수 있습니다.

폴더에 많은 폴더가있는 경우이 트릭을 사용하면 많은 시간이 걸릴 수 있습니다. & 그러나 그것은 작동합니다!

+1

이동을 수행하면 복사보다 훨씬 빠릅니다 (어쨌든 파일을 삭제할 것이므로). 당신 말이 맞습니다. 이것은 기본적으로 내가하고 싶은 것입니다. 내가 겪고있는 문제는 실제로 "find -exec mv"유형 명령을 많은 수의 디렉토리에서 수행하는 것입니다. – HaemEternal

+0

Ohhk, 나는 그 순간에 그 대답에 대해 생각한 후 "이것도 효과가있을 것"이라고 생각했습니다. 어쨌든, 당신은 분명하고 절대적으로 맞습니다. – C0deDaedalus

관련 문제