2

タグの情報に基づいて html ファイルの名前を変更するスクリプトがあります。このスクリプトは、現在のディレクトリとすべてのサブディレクトリを調べて、この名前変更を再帰的に実行します。ただし、名前を変更した後、シェルスクリプトを実行している現在の作業ディレクトリに移動します。ファイルがサブディレクトリに残り、作業ディレクトリに移動されないようにするにはどうすればよいですか?

これが私が取り組んでいるものです:

#!/usr/bin/env bash
for f in `find . -type f | grep \.htm`
   do
   title=$( awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' "$f" )
   mv  ./"$f" "${title//[ ]/-}".htm
done
4

3 に答える 3

1

試す:

mv  ./"$f" "$(dirname "$f")/${title//[ ]/-}".htm

for f in \find...' は、スペースまたは CR が含まれるファイル名では失敗することに注意してください。次のような行でそれを回避できます。

find . -type f -name '*.htm' -type f -exec myrename.sh {} \;

名前変更コードは、 というスクリプトにありますmyrename.sh

于 2013-12-05T21:02:02.857 に答える
1
shopt -s globstar nullglob
for f in **/*.htm
do
   title=$( awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' "$f" )
   mv  "$f" "$(dirname "$f")/${title//[ ]/-}".htm
done
于 2013-12-05T21:02:15.893 に答える