作成・移動・削除・リネーム・一括処理の基本を固めます。
cp / mv / rm / touch / ワイルドカード(*)を中心に練習します。
想定レベル:Lv1〜3/目安:各3〜6分
1) 空ファイルを一度に3つ作成する
問題:カレントに report1.txt report2.txt report3.txt を空で作成してください。
ヒント:同じコマンドに複数のファイル名を並べられます。
▶解答例
touch report1.txt report2.txt report3.txt2) 画像だけを images/ へ移動する
問題:カレントにある *.jpg を images/ ディレクトリへまとめて移動してください(images/ が無ければ作成)。
ヒント:ディレクトリ作成と移動を1行で。
▶解答例
mkdir -p images && mv *.jpg images/3) 拡張子 .txt を一括で .md にリネームする
問題:カレントにある *.txt を全て、拡張子を .md に変更してください。
ヒント:"${f%.txt}.md" で拡張子だけを置き換え。
▶解答例
for f in *.txt; do mv -- "$f" "${f%.txt}.md"; done4) 最終更新が最新のファイルを1つだけ backup/ にコピーする
問題:カレントで最も新しいファイルを1つ選び、backup/ にコピー(タイムスタンプ保持)してください(backup/ は自動作成)。
ヒント:ls -t で新しい順。-p で時刻保持。
▶解答例
mkdir -p backup && cp -p "$(ls -1t | head -n 1)" backup/5) サイズが 0 バイトのファイルを確認しながら削除する
問題:カレント配下(サブディレクトリ含む)の空ファイルを見つけ、確認付きで削除してください。
ヒント:find -size 0 と -exec rm -i の組み合わせ。
▶解答例
find . -type f -size 0 -print -exec rm -i {} ;6) src/ を日付付きディレクトリにバックアップする
問題:src/ の内容を backup_YYYYMMDD/ という今日の日付名のディレクトリに丸ごとコピーしてください(属性保持)。
ヒント:$(date +%Y%m%d) と cp -a。末尾の / も意識。
▶解答例
dir="backup_$(date +%Y%m%d)"; mkdir -p "$dir" && cp -a src/. "$dir"/7) ファイル名に空白を含むファイルだけを targets/ へ移動する
問題:カレント直下で、名前に空白(スペース)を含むファイルだけを targets/ に移動してください(確認付き)。
ヒント:-name "* *" と -maxdepth 1、mv -i。
▶解答例
mkdir -p targets && find . -maxdepth 1 -type f -name "* *" -print -exec mv -i {} targets/ ;8) 削除の代わりに .trash/ へ退避する(簡易ゴミ箱)
問題:カレントの *.log を削除せず .trash/ に退避してください(上書き防止の確認付き)。
ヒント:mv -i と隠しディレクトリ。
▶解答例
mkdir -p .trash && mv -i *.log .trash/安全に試すためのメモ
rmは極力-i(確認付き)を併用しましょう。- ワイルドカード(
*)は展開結果をechoで確認してから実行すると事故を防げます:echo mv *.jpg images/ - 大量処理は
-printで対象を先に一覧してから-execするのが安心です。

