行は次のとおりです。
find /localdir/ | grep '[0-9']$ | xargs -i% cp % /tftpboot
ここでgrepが正確に何を探しているのかを具体的に知りたいです。
誰かが私のためにそれを翻訳してもらえますか?
xargscmdがどのようになるかにも興味があります...
前もって感謝します。
[0-9]
0
からまでの任意の文字を意味し9
ます。 $
行の終わりを意味します。したがってgrep
、数字で終わる任意の行 (つまり、ファイル名) を見つけて、xargs
それぞれを にコピーします/tftpboot
。
もちろん、これらのファイル名のいずれかにスペースが含まれている場合、いくつかの驚きがあります。これは、zsh のシェル内で完全に実行できます (最近のバージョンの bash では可能だと思います)。
cp /localdir/**/*[0-9] /tftpboot
補遺: 面白い引用について質問している場合は、それで問題ありませんが、人間にはあまり親切ではありません。
重要なのは、シェル内で引用符で囲まれた文字列と引用符で囲まれていない文字列を隣り合わせに配置できることです。これらは単一の文字列になります。echo "fo"ob'ar'
製作いたしfoobar
ます。
[
最初の部分はbash にとって特別な ので引用します。]
も特別ですが、bash は special (unquoted)[
を見たことがないので、そのままにして]
おきます。 $
通常は変数を代用しますが、その後には何も来ないため、bash もそれをそのままにしておきます。
実際に grep に渡される文字列は still[0-9]$
です。