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

관련 정보