Если я нахожусь в каталоге /usr/share/tcl8.3/encoding, какая команда скопирует все файлы, начиная с "cp", которые также содержат четное число (из следующего списка):

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

3 ответа3

5

Вы пробовали это?

cp cp*[24680].enc destination
1

Попробуйте: cp cp*[02468]* /path/to/dest/

1

команда

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

Как это устроено

  • find . -maxdepth 1 не рекурсивно (-maxdepth 1) выводит список всех файлов в текущем каталоге (.)

  • grep -P "..." сопоставляет каждую строку с регулярным выражением ...

    • / и \.enc - это строки / и .enc .

    • \d* - любое количество цифр.

    • [02468] это ровно одна четная цифра.

    • $ сигнализирует конец строки.

  • xargs -I '{}' cp '{}' destination выполняет команду

    cp '{}' destination
    

    где '{}' заменяется каждой строкой, переданной из предыдущей команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .