カールがファイルを上書きせずに自動的に名前を変更するようにしましたか?

カールがファイルを上書きせずに自動的に名前を変更するようにしましたか?

私は約8000行のカールコマンドを含む不一致で生成されたファイルを持っていますが、そのほとんどは互いに似ています。問題は、各行を編集できず、各行に別の出力ステートメントを追加できないことです。カールが自動的にファイルに別の名前を割り当てて古い名前を上書きしないようにする方法はありますか?

curl 'https://cdn.discordapp.com/emojis/585807750991183872.png?v=1' \
    -H 'sec-fetch-mode: no-cors' -H 'accept-encoding: gzip, deflate, br' \
    -H 'accept-language: en-US' \
    -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.90 Chrome/76.0.3809.94 Electron/6.0.0 Safari/537.36' \
    -H 'accept: image/webp,image/apng,image/*,*/*;q=0.8' \
    -H 'referer: https://canary.discordapp.com/channels/584291323893383169/607165146476969984' \
    -H 'authority: cdn.discordapp.com' \
    -H 'cookie: __cfduid=d36533327b001d6036b90a8c278c91d491562662533' \
    -H 'sec-fetch-site: same-site' \
    --compressed \
    --output emoji.png ;

この--outputステートメントは、私が各行の終わりを個別に編集するために優れた分割インライン機能を使用できたので、私が追加したものです。すべてのエンディングは除外されて--output停止します--compressed(必要なものはわかりませんが)

長い話を短くカールを使用して各ファイルを異なる名前でダウンロードする方法はありますか?file1では、ちょっと待ってますfile 2か?

ベストアンサー1

ラッパーを入れてcurl呼び出しをパラメータ化するシェル関数を作成できます。たとえば、次のようになります。

fetch_via_curl() {
# $1 is URL to fetch
# $2 is referrer string
# $3 is cookie string
# $4 is output file name

  curl_fmt="$(cat << 'EOF'
curl '%s' \
    -H 'sec-fetch-mode: no-cors' -H 'accept-encoding: gzip, deflate, br' \
    -H 'accept-language: en-US' \
    -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.90 Chrome/76.0.3809.94 Electron/6.0.0 Safari/537.36' \
    -H 'accept: image/webp,image/apng,image/*,*/*;q=0.8' \
    -H 'referer: %s' \
    -H 'authority: cdn.discordapp.com' \
    -H 'cookie: %s' \
    -H 'sec-fetch-site: same-site' \
    --compressed \
    --output '%s' ;
EOF
)"

  file_num=
  while [ -f "$4${file_num:+.${file_num}}" ]
  do
    file_num=$(($file_num+1))
  done
  curl_cmd="$(printf $curl_fmt "$1" "$2" "$3" "$4${file_num:+.${file_num}}")"

  sh -c "$curl_cmd"
}

次に、次の構文を使用してファイルをインポートします。

fetch_via_curl \
    "https://cdn.discordapp.com/emojis/585807750991183872.png?v=1" \
    "https://canary.discordapp.com/channels/584291323893383169/607165146476969984" \
    "__cfduid=d36533327b001d6036b90a8c278c91d491562662533" \
    "emoji.png"

存在しない場合、emoji.pngファイルはに保存されます。存在する場合、ファイル名が存在しないようにする最小量の整数であるNがある場所にemoji.pngファイルが保存されます。emoji.png.N

おすすめ記事