Я использую команду cp в скрипте ma bash
cp /source/* /destination
Я просто хочу избежать копирования всех файлов .txt из моего источника в место назначения.
Если включена расширенная глобализация, вы можете сопоставить все файлы, кроме txt:
cp /source/!(*.txt) /destination
*.txt соответствует всем текстовым файлам. !(...) говорит, что оно соответствует всему, кроме того, что в ... части.
*.txt
!(...)
...
Я не знаю, можете ли вы сделать это в копии, но команда rsync обладает такой способностью. Попробуйте
rsync -av / source / * / destination --exclude "* txt".
См. https://www.howtogeek.com/168009/how-to-exclude-files-from-rsync/ для более подробной информации и примеров.
Попробуйте
find . -maxdepth 1 -type f \( ! -iname "*.txt" \) -print0 | xargs -0 cp {} /destination
-print0 и -0 необходимы для обработки файлов, в имени которых могут быть пробелы.