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
ここでの正規表現は前の例と同じです。