これは私のコマンドです:
find $1 -name "*.html" | sort -n | xargs -I {} sh -c 'echo "Dumping file: "{} >> "$2"; w3m {} >> "$2" 2>&1'
どこ:
$ 1は、拡張子が.htmlのファイルを見つけるパスです。
$ 2は情報を記録したいファイルです(ダンプファイル:* htmlとこのhtmlファイルに含まれる情報)。
問題は、2ドルが解釈されないことです。おそらく、この変数は '...'の間で二重引用符を使用してみましたが、コマンドは機能しませんでした。
私のコマンドラインに$ 2情報を渡す方法を知っている人はいますか?
ベストアンサー1
find "$1" -name "*.html" -print0 | sort -zn | xargs -r -0 -n 1 sh -c '
echo "Dumping file: $2" >> "$1"; w3m "$2" >> "$1" 2>&1
' sh "$2"
別の最適化は次のとおりです。
find "$1" -name "*.html" -print0 | sort -zn | xargs -r -0 -n 1 sh -c '
exec 1>> "$1" 2>&1
echo "Dumping file: $2"
w3m "$2"
' sh "$2"
echo
どちらのコマンドもw3m
ファイル記述子 1 と 2 を使用して同じことを行うので、最初から 1 つの場所で実行するのが最善です。
sh
各ファイルに1つずつ実行する必要はありません。
find "$1" -name "*.html" -print0 | sort -zn | xargs -r -0 sh -c '
out=$1; shift
for file do
echo "Dumping file: $file"
w3m "$file"
done >> "$out" 2>&1
' sh "$2"