파일을 2개 디렉터리 뒤로 이동

파일을 2개 디렉터리 뒤로 이동
$ cat file
/tmp/foldera/folderb/folderc/file1
/tmp/folderc/folderd/foldere/file2
/tmp/folderf/folderg/folderh/file3

이 파일을 다음으로 이동해야 합니다.

/tmp/foldera/
/tmp/folderc/
/tmp/folderf/

이를 수행하려면 루프나 간단하고 편리한 방법을 사용하십시오.

답변1

while 루프를 사용하세요:

while IFS= read -r l; do
  mv -v -- "$l" "${l%/*/*/*}/"
done <file
  • while IFS= read -r lfile한줄씩 읽어 보겠습니다 .
  • mv -v파일을 이동하고 세부정보를 -v알려주세요 .mv
    • "$l"소스 파일 이름입니다
    • "${l%/*/*/*}/"대상 디렉토리입니다. /*/*/*파일 이름 끝과 그 사이에 있는 슬래시 3개( )를 제거합니다 .

그러면 다음이 생성됩니다.

»/tmp/foldera/folderb/folderc/file1“ -> »/tmp/foldera/file1“
»/tmp/folderc/folderd/foldere/file2“ -> »/tmp/folderc/file2“
»/tmp/folderf/folderg/folderh/file3“ -> »/tmp/folderf/file3“

답변2

나는 Chaos와 비슷한 대답을 제안하고 싶지만dirname

while IFS= read -r l; do
    mv -- "$l" "$(dirname -- "$(dirname -- "$l")")"
done <file

dirname보고서 파일/디렉터리가 있는 디렉터리의 경로입니다. 이는 파일에 다음과 같은 항목이 있는 경우 디렉터리 이동을 처리할 수 있다는 장점이 있습니다.

/tmp/foldera/folderb/folderc/folderd/

관련 정보