디렉토리에 있는 임의의 파일 X개 나열

디렉토리에 있는 임의의 파일 X개 나열

표준 Linux 명령을 사용하여 디렉터리에서 임의의 파일 집합(예: 30개)을 나열하는 방법이 있습니까? (존재하다 zsh)

상위 답변은 다음과 같습니다.여기나에게 적합하지 않음 ( sort옵션이 인식되지 않음 -R)

답변1

ls출력을 파이핑해 보십시오 .shuf,예를 들어

$ touch 1 2 3 4 5 6 7 8 9 0
$ ls | shuf -n 5
5
9
0 
8
1

-n플래그는 원하는 임의 파일 수를 지정합니다.

답변2

zsh를 언급한 이후:

rand() REPLY=$RANDOM
print -rl -- *(o+rand[1,30])

printsay를 say ogg123로 바꿀 수 있습니다 .***/*.ogg

답변3

간단한 해결책ls 구문 분석을 피하세요또한 공백에서도 작동합니다.

shuf -en 30 dir/* | while read file; do
    echo $file
done

답변4

Zsh만 사용하는 한 줄의 코드:

files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]} + 1)); echo "${files[i]}"; done

배열 인덱싱이 0부터 시작하는 Bash에서도 마찬가지입니다.

files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]})); echo "${files[i]}"; done

두 버전 모두 중복은 고려되지 않습니다.

관련 정보