Text-Processing
shuf 文件 – 輸出文件:就地改組
該
shuf
命令有一個--output
標誌,您可以使用它來指定將其輸出寫入何處(而不是寫入標準輸出)。我想就地隨機播放文件。
shuf file --output file
使用相同的文件名作為輸出文件名和要讀取的文件是否安全?或者這會導致文件損壞嗎?它是特定於平台的嗎?當我在一個小文件上進行測試時,它似乎工作正常,但是手冊頁沒有說明這一點,我不確定是否要擔心它。
是的 - 根據文件- 就地隨機播放文件應該是安全的:
-o output-file
--output=output-file
將輸出寫入輸出文件而不是標準輸出。在打開output-file
shuf
之前讀取所有輸入,因此您可以使用和.shuf -o F <F``cat F | shuf -o F
正如您所說,對小文件進行現場測試似乎可以滿足您的要求,但是如果您想安全起見,最好的選擇是寫入一個臨時文件,然後將新文件換成:
#!/bin/bash scratch=$(mktemp) trap 'rm -f "$scratch"' EXIT if [[ -r "$1" ]]; then shuf "$1" --output "$scratch" && mv "$scratch" "$1" fi
上面的腳本可以保存為例如
shuf_in_place
您的PATH
.