
수천 개의 파일이 포함된 디렉토리가 있습니다. 100개의 파일(어떤 파일이든 가능)을 다른 위치로 어떻게 이동할 수 있습니까?
답변1
for file in $(ls -p | grep -v / | tail -100)
do
mv $file /other/location
done
파일 이름에는 공백, 줄 바꿈(기본값 으로 가정 $IFS
), 와일드카드( ?
, *
, [
) 또는 로 시작하는 문자가 포함되지 않는 것으로 가정됩니다 -
.
답변2
zsh에서 가장 쉽습니다:
mv -- *([1,100]) /other/location/
이렇게 하면 숨겨지지 않은 처음 100개의 파일(모든 유형의 경우 다음으로 변경됨)이 이동 됩니다 ([1,100])
.(.[1,100])
정기적인파일만 또는 (^/[1,100])
다음을 제외한 모든 유형목차) 이름을 기준으로 사전순으로 정렬됩니다. 다음을 사용하여 다른 정렬 순서를 선택할 수 있습니다.o
글로벌 예선예를 들어 가장 오래된 파일 100개를 이동합니다.
mv -- *(Om[1,100]) /other/location/
다른 쉘의 경우 루프에서 이 작업을 수행하고 일찍 종료할 수 있습니다.
i=0
for x in *; do
if [ "$i" = 100 ]; then break; fi
mv -- "$x" /other/location/
i=$((i+1))
done
또 다른 휴대용 방법은파일 목록을 작성하고 마지막 100개를 제외하고 모두 삭제합니다..
답변3
다음은 나를 위해 일했습니다. 이전에 게시했다면 죄송합니다. 빠른 스캔으로 볼 수 없었습니다.
ls path/to/dir/containing/files/* | head -100 | xargs -I{} cp {} /Path/to/new/dir
답변4
100개를 무작위로 이동합니다.
shuf -n 100 -e * | xargs -i mv {} path-to-new-folder
모든 파일 이름에는 따옴표나 백슬래시가 포함되지 않거나 공백으로 시작되지 않는 것으로 가정됩니다 -
. mv
stdin은 이제 파이프이므로 사용자 확인을 위해 내보낼 수 있는 모든 프롬프트는 효과가 없습니다 . 보다 정확하고 안정적이며 효율적인 접근 방식(ksh 스타일 프로세스 교체를 지원하는 셸 사용)은 다음과 같습니다.
xargs -r0a <(shuf -zn100 -e -- *) mv -t path-to-new-folder --