파일 시스템에서 무작위로 선택한 경로에 파일을 여러 번 복사하는 방법은 무엇입니까?

파일 시스템에서 무작위로 선택한 경로에 파일을 여러 번 복사하는 방법은 무엇입니까?

파일 시스템과 특수 파일 foo가 있습니다. 스크립트가 이 파일 시스템의 폴더에 대한 임의의 경로를 여러 번(5, 10 또는 100) 선택하고 foo 파일을 각 폴더에 복사하도록 하고 싶습니다.

여기에 이미지 설명을 입력하세요.

아이디어는 있었지만 실제 대본으로 만들기에는 충분하지 않았고, 그 아이디어가 성능 측면에서 의미가 있는지도 몰랐습니다.

   idea in pseudo-script:

    read into variable n how many random paths should be found
    file / -type d > file  # put all existing directory paths into a file
    repeat n-times{
    choose_random_line<file | xargsintosecondargument cp foo 
   /* chose a random line from file and use it as second argument of copy
    command, first is foo. */
    }

답변1

GNU 시스템에서:

find / -type d -print0 | shuf -zn5 | xargs -r0n1 cp foo

(이제 파일을 /sys 또는 /proc와 같은 디렉터리에 복사하는 것은 의미가 없거나 불가능합니다. -xdev마운트된 파일 시스템의 선택한 디렉터리에 추가하기만 하면 됩니다 /.)

다음을 통해 FreeBSD 및 GNU와 호환되도록 만들 수 있습니다.

find / -type d -print0 | sort -zR | tr '\0\n' '\n\0' | head -n5 |
  tr '\0\n' '\n\0' | xargs -r0n1 cp foo

관련 정보