CP-Befehlsabfrage

CP-Befehlsabfrage

Wenn ich mich in einem Verzeichnis namens /usr/share/tcl8.3/encoding befinde, welcher Befehl würde alle Dateien kopieren, die mit „cp“ beginnen und außerdem eine gerade Zahl enthalten (aus der folgenden Liste):

cp1250.enc  cp1255.enc  cp737.enc  cp857.enc  cp864.enc  cp932.enc
cp1251.enc  cp1256.enc  cp775.enc  cp860.enc  cp865.enc  cp936.enc
cp1252.enc  cp1257.enc  cp850.enc  cp861.enc  cp866.enc  cp949.enc
cp1253.enc  cp1258.enc  cp852.enc  cp862.enc  cp869.enc  cp950.enc
cp1254.enc  cp437.enc   cp855.enc  cp863.enc  cp874.enc

Antwort1

Haben Sie das probiert?

cp cp*[24680].enc destination

Antwort2

Versuchen:cp cp*[02468]* /path/to/dest/

Antwort3

Befehl

find . -maxdepth 1 | grep -P "/cp\d*[02468]\.enc$" | xargs -I '{}' cp '{}' destination

Wie es funktioniert

  • find . -maxdepth 1nicht-rekursiv ( -maxdepth 1) listet alle Dateien im aktuellen Verzeichnis auf ( .)

  • grep -P "..."vergleicht jede Zeile mit demregulären Ausdruck ...

    • /und \.encsind die Zeichenfolgen /und .enc.

    • \d*ist eine beliebige Anzahl von Ziffern.

    • [02468]ist genau eine gerade Ziffer.

    • $signalisiert das Ende einer Zeile.

  • xargs -I '{}' cp '{}' destinationführt den Befehl aus

    cp '{}' destination
    

    wobei „wobei '{}'“ durch jede vom vorherigen Befehl weitergeleitete Zeile ersetzt wird.

verwandte Informationen