Bash - サブディレクトリを繰り返してこのコマンドを実行する方法

Bash - サブディレクトリを繰り返してこのコマンドを実行する方法

まあ、私はこの記事を投稿することにしました前に、私の問題に関してここに提供されているすべてのソリューションを試しました。私はこれが簡単であることを知っていますが、Bashを扱うのは今回が初めてです。ですのでご了承ください。

このスクリプトがあります

    FILES=*.html
for f in $FILES
do

  # extension="${f##*.}"
  filename="${f%.*}"
  echo "Converting $f to $filename.md"
  `pandoc $f -t markdown -o $filename.md`
  rm $f
done

このスクリプトは、Htmlファイルでいっぱいのディレクトリを同等のMarkdownファイルに変換するために作成されました。変換にPandocを使用します。

問題は、このスクリプトが同じフォルダ内のファイルのみを変換することです。次のようにサブフォルダ内のすべてのファイルを変換したいと思います。

Folder1/Folder2/folder3/index.html

どのようにできるかについてのアイデアはありますか?

ベストアンサー1

ほぼ同じコードを使用しますが、完全なパスを取得してfindスペースを書き留めます。

find ./path/to/start/from -iname "*.htm*" -exec bash -c 'fn=${1%.*}; sn=${fn##*/}; 
    echo "Converting $1 to $sn.md"; 
    pandoc "$1" -t markdown -o "$fn.md" && rm "$1"
' bash {} \;

構造find .....-exec

sh -c `some code here` sh {}

as{}から戻ってそこから再生できます。bashbash -c$1

おすすめ記事