В Linux, как скопировать все файлы, не начиная с заданной строки? - PullRequest
6 голосов
/ 12 января 2011

Я попытался с помощью следующей команды:

cp src_folder/[!String]* dest_folder

Однако эта команда скопирует все файлы, которые не начинаются ни с одного из символов 'S', 't', 'r', 'i', 'n', 'g', вместо копирования файлов, которые не начинайте с "String".

Ответы [ 4 ]

14 голосов
/ 12 января 2011

Вариант ответа Конрада, использование опции cp -t для указания целевого каталога упрощает последнюю команду. Он создает один cp процесс для копирования всех файлов.

ls src_folder | grep -v '^String' | xargs cp -t dest_folder
  • список всех файлов в src_folder
  • отфильтровывает все те, которые начинаются с String
  • скопировать все оставшиеся файлы в dest_dir
5 голосов
/ 12 января 2011

В Баш:

shopt -s extglob
cp src_folder/!(String*) dest_folder
3 голосов
/ 12 января 2011
ls src_folder | grep -v '^String' | xargs -J % -n1 cp % dest_folder

Это будет

  • список всех файлов в src_folder
  • отфильтровывает все те, которые начинаются с String (так что остальное остается)
  • Вызвать команду cp
    • один раз для каждого из этих файлов (-n1 говорит вызывать cp для каждого из них отдельно)
    • , используя в качестве аргументов % dest_folder, где % заменяется фактическим именем файла.
1 голос
/ 12 января 2011
cp src_folder/!(String*) dest_folder

Попробуй ~ Крис

...