파일 처리 순서를 선택하는 방법은 무엇입니까 mv
? (즉, 수동으로 호출할 수 있지만 경로를 유지하고 재귀적으로 작업하면 빠르게 문제가 될 수 있습니다.)
하나의 fs는 /mnt에 마운트되고 다른 하나는 /home에 마운트되어 있습니다.
/mnt에는 여러 폴더에 다양한 파일이 포함되어 있습니다.
모든 것을 /home으로 옮기고 싶어요
하지만 이동 순서를 선택하고 싶습니다.
예를 들어 /mnt/a/t/d/v/file이 /mnt/b/d/g/e/file보다 먼저 처리되기를 원합니다.
사용 가능한 종류가 있으면 사용할 수 있습니다(제 생각에는).
답변1
이 작업을 수행할 때:
mv /mnt/* /home/
/mnt/*
일치하는 파일 목록(이 패턴의 경우 이는 에서 숨겨지지 않은 모든 파일임 /mnt
)으로 확장하고 결과를 에 전달하므로 mv
, , , ...을 별도 의 인수로 mv
수신하는 것은 셸입니다 .mv
/mnt/a
/mnt/b
/mnt/c
/home/
기본적으로 쉘은 전역 확장을 어휘적으로 정렬합니다. zsh 셸에서는 o
/ O
glob 한정자를 사용하여 순서를 변경할 수 있습니다.
/mnt/a
는 어휘적으로 앞쪽으로 /mnt/b
정렬되어 있기 때문에 앞쪽으로 이동됩니다 . 역순으로 이동하려면 다음을 수행하십시오.a
b
mv /mnt/*(DOn) /home/
zsh에서(숨겨진 파일을 이동하기 위한 한정자를 추가함 D
)
먼저 이동 하려면 /mnt/b
다음을 수행하십시오.
set -o extendedglob
mv /mnt/b /mnt/^b(D) /home/
또는:
mv /mnt/b /home/ && mv /mnt/*(D) /home/
일반적 으로 재귀적으로 작동하지 않도록 mv
몇 가지만 수행합니다 . rename()ing
그러나 파일 시스템 간에 이동할 때는 이 작업을 수행할 수 없으므로 원본 파일을 재귀적으로 복사한 다음 삭제하는 방법을 사용합니다.
및 가 서로 다른 두 파일 시스템에 있는 mv /mnt/* /home/
에서는 앞으로 이동되지만 또는 에 있는 파일의 경우 순서가 지정되지 않으며 일반적으로 이를 제어할 수 없습니다./mnt
/home
/mnt/a
/mnt/b
/mnt/a
/mnt/b
이러한 순서를 결정하려면 개별 파일을 수동으로 이동해야 합니다. 또는 cpio -p
지정된 pax -rw
순서대로 파일을 복사한 다음 소스를 수동으로 삭제하라는 지시를 받을 수 있습니다.