경로에서 하위 디렉터리를 제거하고 파일을 상위 디렉터리로 승격

경로에서 하위 디렉터리를 제거하고 파일을 상위 디렉터리로 승격

경로 내에 중복된 폴더(다음 예)가 포함된 여러 파일이 있습니다 bar. 이 디렉토리를 제거하고 포함된 내용을 상위 디렉토리로 이동하고 싶습니다. 검색 및 바꾸기를 비유로 사용하려면 경로에서 /foo/with를 바꾸고 싶습니다 ./

초기 상태:

foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt

목표:

foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt

나는 bash를 사용하여 이 문제를 해결하는 것을 선호하지만 종속성이 없고 Linux에서 작동하는 모든 솔루션에 열려 있습니다.


이 스레드를 우연히 발견한 사람에게 도움이 되는 경우에는 다음이 있습니다.Windows에 대한 기존 답변로보카피를 사용합니다.

답변1

나는 다음과 같이 해결했습니다.

for iteration_path in ${1}/*; do
  if [[ ! -z $iteration_path ]]; then
    mv "${iteration_path}"/bar/* "${iteration_path}";
    rmdir "${iteration_path}"/bar;
  fi
done

누구든지 AFH의 제안을 확장할 수 있다면매개변수 확장, 그것이 더 우아한 솔루션이라면 관심이 있을 것입니다.

관련 정보