forループからインタラクティブにコマンドを読む

forループからインタラクティブにコマンドを読む

以下のようにインタラクティブにいくつかのmp3ファイルを削除したいと思います。

$ for i in *.mp3; do mplayer "$i"; echo "$i"; sleep 5; interactive_code; done

Interactive_codeは、私が押すと「$ i」ファイルを削除し、を押すとそのファイルをディレクトリに移動し、rmスペースバーを押すとループを続行する必要があります。tmpmv

ベストアンサー1

このスクリプトは次のことを行う必要があります。

#!/usr/bin/env bash

for i in ./*.mp3; do

  mplayer "${i}"
  printf '%s\n' "${i}"

  read -p 'What to do?: ' -r ans

  if [[ "${ans}" == 'rm' ]]; then
    rm "${i}"
  elif [[ "${ans}" == 'mv' ]]; then
    mv "${i}" 'tmp'
  fi

done

PS:これはtmpディレクトリがすでに存在し、現在の作業ディレクトリにあると仮定します。別の場所にある場合、またはその/tmpディレクトリを参照している場合は、コードの対応する部分を変更するだけです。

おすすめ記事