수천 개의 파일이 포함된 폴더에서 100개의 파일을 이동하는 방법은 무엇입니까?

수천 개의 파일이 포함된 폴더에서 100개의 파일을 이동하는 방법은 무엇입니까?

수천 개의 파일이 포함된 디렉토리가 있습니다. 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

~에서https://stackoverflow.com/questions/14033129/how-to-move-a-given-number-of-random-files-on-unix-linux-os

모든 파일 이름에는 따옴표나 백슬래시가 포함되지 않거나 공백으로 시작되지 않는 것으로 가정됩니다 -. mvstdin은 이제 파이프이므로 사용자 확인을 위해 내보낼 수 있는 모든 프롬프트는 효과가 없습니다 . 보다 정확하고 안정적이며 효율적인 접근 방식(ksh 스타일 프로세스 교체를 지원하는 셸 사용)은 다음과 같습니다.

xargs -r0a <(shuf -zn100 -e -- *) mv -t path-to-new-folder -- 

관련 정보