-3

行は次のとおりです。

find /localdir/ | grep '[0-9']$ | xargs -i% cp % /tftpboot

ここでgrepが正確に何を探しているのかを具体的に知りたいです。
誰かが私のためにそれを翻訳してもらえますか?

xargscmdがどのようになるかにも興味があります...

前もって感謝します。

4

1 に答える 1

4

[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]$です。

于 2013-01-17T19:49:26.413 に答える