$ 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 l
file
한줄씩 읽어 보겠습니다 .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/