Вы можете использовать herestring <<<
для передачи строки в grep:
newnum=$(grep -oE '[0-9]+' <<< "$key" | sort -rn | head -n 1)
Это будет более эффективно, чем echo "$key" | grep
, создающее дополнительный процесс.
Не забудьте заключить ваши переменные в двойные кавычки, чтобы предотвратить разбиение слов и подстановку. См. также это .
Вам нужно сделать это двумя командами, так как --remove-files
будет игнорировать --exclude
.
tar -czvf../All_Files.tar.gz --exclude 'Merge_*' *.csv && \
find. -type f -name '*.csv' -not -name 'Merge_*' -delete
Сообщение "tar: Removing leading '/' from member names"
НЕ является ошибкой, но tar работает как положено.
Обратите внимание, что --exclude
принимает шаблон (, например. 'Merge_*'
), а не список, разделенный запятыми -. Вам нужно поставить его перед файлами, которые вы хотите исключить из архива, иначе файлыMerge_
-окажутся в вашем архиве.