В Linux, как скопировать все файлы, не начинающиеся с заданной строке?
Я попытался выполнить следующую команду:
cp src_folder/[!String]* dest_folder
однако эта команда скопирует все файлы, которые не начинаются ни с одного из символов "S", "t", "r", "i", "n", " g "вместо копирования файлов, которые не начинаются с "String".
4 ответов
вариант ответа Конрада, используя cp
опции -t
чтобы указать целевой каталог, упрощает последнюю команду. Он создает один cp
процесс копирования всех файлов.
ls src_folder | grep -v '^String' | xargs cp -t dest_folder
- список всех файлов в
src_folder
- отфильтровать все те, которые начинаются с
String
- скопировать все оставшиеся файлы
dest_dir
ls src_folder | grep -v '^String' | xargs -J % -n1 cp % dest_folder
это
- список всех файлов в
src_folder
- отфильтровать все те, которые начинаются с
String
(Так что остальное остается) - вызов
- один раз для каждого из этих файлов (
-n1
говорит называтьcp
для каждого из них в отдельности) - используя в качестве аргументов
% dest_folder
, где%
заменяется фактическим именем файла.
- один раз для каждого из этих файлов (