ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

フォルダ内のファイルをランダムに指定個数選んで表示(コピー、移動)する

(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コマンドだけど、途中の行を抽出する方法を以下のページに記載したので、興味があったら見てね。

(追記終了)

コピーや移動の場合は、ターゲットディレクトリを指定できるようにした方がいいよね(手抜き ^^;)。

物忘れのひどい筆者向けだから良しとしよう…

関連ページ