디렉토리 트리에서 무작위 샘플 선택

디렉토리 트리에서 무작위 샘플 선택

파일이 포함된 디렉터리가 포함된 디렉터리가 있습니다. 각 리프 디렉터리에서 두 개의 파일을 무작위로 선택하고 싶습니다. 내가 찾은단일 디렉토리에서 선택하는 것에 관한 이 질문, 그러나 수백 개의 디렉토리 각각에서 이를 실행하는 것은 고통스러울 것입니다.

답변1

고정 깊이 디렉터리 구조(설명에 따라 파일이 포함된 하위 하위 디렉터리가 있는 디렉터리)를 사용하여 다음을 수행할 수 있습니다.

for subsubdir in "$directory"/*/*/
do
    find "$subsubdir" -type f | shuf -n 2
done | shuf

마지막 | shuf가정은 목록이 디렉터리별로 정렬되지 않고 전체적으로 무작위로 정렬되기를 원한다는 것입니다. 그렇지 않으면 버리십시오.

파일 이름에 줄 바꿈을 원하면 0으로 끝나는 파일 목록으로 전환할 수 있습니다.

답변2

다음을 수행할 수 있습니다.

find /some/dir -type d -not -empty -exec sh -c 'find "$1" -maxdepth 1 -type f | shuf -n 2' sh {} \;

이것이 반드시 가장 많은 것은 아니다효율적인그러나 그것을 하는 방법. :)

관련 정보