ファイル名のx文字をcpと一致させるには?

ファイル名のx文字をcpと一致させるには?

cp以下を使用して、部分的に動的な名前のファイルをコピーしてみました。

cp google71bg2z2850dafxa3.html DESTIONATION

原則としてgoogle、ファイル名部分は一貫しています71bg2z2850dafxa3が、ファイル名の(16文字)部分は動的であり、必要でない限り、どのスクリプトでも手動で変更したくないので、正規表現を使用することを検討しました。

man cp「正規表現」または「正規表現」のデータが見つかりませんでした。
また、cp x{2} DESTINATION名前付きファイルを試しましたがx12失敗しました。

ファイル名のx文字をcpと一致させるには?

16文字を正規表現と一致させるにはどうすればよいですか?

ベストアンサー1

これはおそらく単純化されているかもしれませんが、関心のあるすべてのファイルがディレクトリにあり、ファイル名にスペースが含まれていない場合は、次のことができます。

#!/bin/bash
destination="/wherever"
for i in *; do
    if echo "${i}" | grep -q -E '^google.{16}\.html$'; then
        cp "${i}" "${destination}"
    fi
done

grepここでは正規表現の一致を使用します。^ファイル名は()で始まりgoogle、その後に16文字(.{16})が続き、最後に.html名前の終わり()が続きます。$

Bashは正規表現のマッチングもサポートしているため、次のこともできます。

#!/bin/bash
destination="/wherever"
for i in *; do
    if [[ "${i}" =~ ^google.{16}\.html$ ]]; then
        cp "${i}" "${destination}"
    fi
done

ここでの正規表現は前の例と同じです。

おすすめ記事