在 ls 和 mv 中使用正则表达式

Moh*_*sen 7 ls shell wildcards rename

我有这样的目录结构

??? UK
?   ??? BuyBand_go_UK.png
?   ??? BuyBand_go_UK.svg
?   ??? BuyBand_K.png
?   ??? BuyBand_K.svg
?   ??? BuyBago_UK.png
?   ??? BuyBago_UK.svg
?   ??? BuyBand_ch_Logo_UK.png
?   ??? BuyBand_ch_Logo_UK.svg
??? US
    ??? BuyBand_go_US.png
    ??? BuyBand_go_US.svg
    ??? BuyBand_S.png
    ??? BuyBand_S.svg
    ??? BuyBago_UK.png
    ??? BuyBago_UK.svg
    ??? BuyBand_ch_Logo_US.png
    ??? BuyBand_ch_Logo_US.svg
Run Code Online (Sandbox Code Playgroud)

如何在一个命令中移动父目录中UKUS目录中的所有文件?

这是我尝试过的:

   mv (US|UK)/* .
Run Code Online (Sandbox Code Playgroud)

小智 11

从父目录试试这个:

mv {UK,US}/* .
Run Code Online (Sandbox Code Playgroud)

{A,B,...}语法类似于(A|B|...)正则表达式中使用的语法。

如果您的列表中没有显示那些目录中的点文件(隐藏文件),请运行

mv {UK,US}/{*,.*} .
Run Code Online (Sandbox Code Playgroud)

*水珠将扩大到所有文件和除了那些开始点目录。该.*水珠将扩大到所有的点文件的。

  • 请注意,`{a,b}` 不是 POSIX。对于完全可移植的解决方案,`mv UK/* US/* .` 或者在这种非常特殊的情况下`mv U[KS]/* .` 代替。 (3认同)