>

주어진 디렉토리에 약 10000 개의 파일이 있습니다. 무작위로 1000 개의 파일을 선택하여 다른 디렉토리에 넣는 데 도움이되는 명령이 있습니까? 선택한 파일은 원래 디렉토리에서 제거해야합니다.

  • 답변 # 1

    shuf 가있는 경우 파일 이름에 개행 문자가없고 하위 디렉토리가없는 경우 원하는 작업을 쉽게 수행 할 수 있습니다.

    mapfile -t sample < <(shuf -n 1000 -e given_directory/*)
    mv "${sample[@]}" other_directory
    
    

    하위 디렉토리가 있으면 find 를 사용하여 파일 목록을 얻을 수 있습니다.  글로브 대신에. 또는 오버 샘플링 및 필터링 할 수 있습니다. 와이즈 비즈   find 를 사용할 수 있기 때문에 이름에 개행 문자가있을 수있는 파일 (실제로 나쁜 생각이지만 반드시 가능성을 무시할 수 있음을 의미하지는 않습니다)을 다루는 데 도움이됩니다   -print0 와 결합 된 행동   -z 에 깃발 . 예를 들어

    shuf
    
    

    find given_directory -type f -print0 | shuf -z -n 1000 | xargs -0 mv -t other_directory  명령 줄의 시작 부분에 대상 디렉토리를 제공 할 수있는 (매우 유용한) Gnu 확장자이며 mv -t 와 잘 작동합니다. / xargs  명령 행 끝에 여러 인수를 넣는 모델.

    find -exec

  • 이전 bash - if, elif 및 else 쉘 스크립트 Linux 문
  • 다음 boot - Fedora 24에서 GRUB 메뉴 숨기기