(2023-06-07 初稿 - 2023-06-11 追記)
元ネタは、以下のサイトの「フォルダ内のファイルをランダムに10個コピーする」で、素晴らしいアイデア。
ワンライナーで汎用性が高いのだけど、筆者はすぐに忘れそうなので、Bashスクリプトにしてみた。本当は、for in do 〜 doneが使いたいだけ… ^^;
では、さっそく作ったスクリプトを貼るよ。
#!/usr/bin/bash
# ranselmv フォルダ内のJpegファイルをランダムに選んで表示
# Ver0.01 2023-06-07 start
Usage="ranselcat ディレクトリ内のファイルをランダムに指定個数表示
[Usage] ranselcat 指定個数"
fext="txt"
fnum=$1
if [ $# -ne 1 ]; then
echo "$Usage" # ダブルクォート必要
exit
fi
for f in $(ls *.$fext | sort -R | tail -n $fnum)
do
cat $f # 表示
cp $f ./temp # コピー
mv $f ./temp # 移動
done
せっかくのワンライナーの汎用性を台無しにしている気がする。(^^ゞ
(2023-06-11 追記)
for f in $(ls *.txt| sort -R |tail -n 10);do cat $f; done
ついでに、最初の行はhead、最後の行はtailコマンドだけど、途中の行を抽出する方法を以下のページに記載したので、興味があったら見てね。
(追記終了)
コピーや移動の場合は、ターゲットディレクトリを指定できるようにした方がいいよね(手抜き ^^;)。
物忘れのひどい筆者向けだから良しとしよう…