ファイルをハードドライブの多数のランダムな場所にコピーするにはどうすればよいですか?私はどこでも、ディスク上の〜100のランダムなもののようにやってみたい、私はファイルをランダムなディレクトリにコピーしますか?
find ~ -type d -exec cp dat_boi.jpg {} \;
のようなものを考えていたしかし、それはすべてのディレクトリにコピーします。
ファイルをハードドライブの多数のランダムな場所にコピーするにはどうすればよいですか?私はどこでも、ディスク上の〜100のランダムなもののようにやってみたい、私はファイルをランダムなディレクトリにコピーしますか?
find ~ -type d -exec cp dat_boi.jpg {} \;
のようなものを考えていたしかし、それはすべてのディレクトリにコピーします。
bash
shuf
と1ライナーがこのトリックを行うことができます。
/bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
このコピーコピーされるとと/bin/cp
が呼び出されるターゲットフォルダを見ることが任意である-v
冗長フラグをランダムに一つのパス-n1
を返すように引数をshuf
によって指示されるように、新しいフォルダにdat_boi.jpg
都度、/bin/cp
ネイティブのcp
を越えると、ファイル上書きの代わりにファイルが存在するという厄介なエラーが発生するのを避けることができます。
ランダムなフォルダにコピーが行われていることを確認してください。あなたがループ内でコマンドを実行することができれば、あなたのユースケースに合わせて
$ find . -type d
.
./foo
./bar
./woo
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./bar/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./bar/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
は100回、あなたがshuf
作業のrandomityを観察することができ、と言います。
が、超堅牢ではないかもしれない:
平易な英語でfind . -type d | sort -R | head -n 5 | xargs -I {} cp myfile "{}"
:、カレントディレクトリからのディレクトリを見つけるランダムに並べ替え、このランダムなリストの一番上に5を選択し、コピーそれらにmyfile。
$ ls
A C E G I K M N P R T V X Z
B D F H J L myfile O Q S U W Y
$ find . -type d | sort -R | head -n 5 | xargs -I {} cp myfile "{}"
$ tree
.
├── A
├── B
├── C
├── D
├── E
├── F
├── G
├── H
├── I
│ └── myfile
├── J
├── K
├── L
│ └── myfile
├── M
│ └── myfile
├── myfile
├── N
├── O
├── P
├── Q
├── R
│ └── myfile
├── S
├── T
├── U
├── V
│ └── myfile
├── W
├── X
├── Y
└── Z
tree
しか結果を表示することができません。
これらのディレクトリは存在する必要がありますか?書き込み権限がないとどうなりますか? –
ああ、彼らはすでに存在するディレクトリでなければならない。書き込み権限が問題であれば、私はそのスクリプトが特に失敗して失敗すると思っていました。 – jdt
まず、 'find'を実行して可能なディレクトリのリストを取得し、そのリストを_lst.txtに保存します。_次に、_lst.txt_からN個のアイテムをランダムに選択し、ファイルをこれらのディレクトリにコピーします。 – boardrider