Verwenden von Regex in ls und mv

7

Ich habe eine Verzeichnisstruktur wie diese

├── 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

Wie kann ich alle Dateien in beiden UKund USVerzeichnis im übergeordneten Verzeichnis in einem Befehl verschieben?

Das habe ich versucht:

   mv (US|UK)/* .
Mohsen
quelle

Antworten:

11

Versuchen Sie dies aus dem übergeordneten Verzeichnis:

mv {UK,US}/* .

Die {A,B,...}Syntax ähnelt der (A|B|...)in regulären Ausdrücken verwendeten Syntax.

Wenn Sie Punktedateien (versteckte Dateien) in den Verzeichnissen haben, die nicht in Ihrer Auflistung angezeigt werden, führen Sie aus

mv {UK,US}/{*,.*} .

Der *Globus wird auf alle Dateien und Verzeichnisse mit Ausnahme der mit Punkten beginnenden Dateien und Verzeichnisse erweitert. Der .*Glob wird auf alle Punktedateien erweitert.


quelle
3
Beachten Sie, dass dies {a,b}kein POSIX ist. Für eine vollständig tragbare Lösung mv UK/* US/* .oder in diesem speziellen Fall mv U[KS]/* ..
Tripleee