수천 개의 파일이있는 디렉토리가 있습니다. 100 개의 파일 (모든 파일)을 다른 위치로 옮기려면 어떻게해야합니까?
답변
for file in $(ls -p | grep -v / | tail -100)
do
mv $file /other/location
done
즉 파일 이름은 줄 바꿈 (기본값 가정에 공백이 포함되지 않은 가정 $IFS
), 와일드 카드 문자 ( ?
, *
, [
) 또는 시작 -
.
답변
zsh에서 가장 쉽습니다.
mv -- *([1,100]) /other/location/
이 이동 처음 100 비 숨겨진 파일 (모든 종류의 변경 ([1,100])
에 (.[1,100])
대한 일반 전용 또는 파일이 (^/[1,100])
어떤 종류의하지만 대한 디렉토리 ) 이름 사전 식 순서입니다. o
glob 한정자를 사용하여 다른 정렬 순서를 선택할 수 있습니다 ( 예 : 가장 오래된 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을 제외한 모든 것을 제거하는 것 입니다.
답변
zsh를 사용하지 않는 경우 :
set -- *
[ "$#" -le 100 ] || shift "$(($# - 100))"
mv -- "$@" /target/dir
마지막 (알파벳 순서로) 100을 움직입니다.
답변
쉘의 다음 oneliner가 도움이 될 것입니다.
foreach i (`발견 Source_Directory -type f --max-depth 1 | tail -100`); 하다; {mv $ i Target_Directory}; 끝난
답변
다음은 나를 위해 일했습니다. 이전에 게시 한 경우 죄송하지만 빠른 스캔에서 보지 못했습니다.
ls path/to/dir/containing/files/* | head -100 | xargs -I{} cp {} /Path/to/new/dir
답변
shuf -n 100 -e * | xargs -i mv {} path-to-new-folder
답변
mmv 는 파일의 대량 이름 바꾸기를 수행 할 수있는 뛰어난 유틸리티입니다. (나는에 있었다 sudo apt-get install mmv
설치 내 컴퓨터에.) 간단한 사용 예 : 당신은 당신이 소문자 .JPG로 변경하고 싶은 것을 확장 .JPG 가진 파일의 디렉토리가 있다고 가정합니다. 다음 명령은 트릭을 수행합니다.
mmv \*.JPG \#1.jpg
백 슬래시는 와일드 카드가오고 있음을 나타내는 데 사용됩니다. * / JPG는 JPG 확장명과 일치합니다. 명령의 “to”부분에서 # 1은 첫 번째 와일드 카드의 일치하는 텍스트를 사용하여 파일 이름을 바꿉니다. 물론 # 1 앞에 다른 경로를 넣어 파일을 이동할 수도 있습니다.