переместить все файлы, кроме файла с соответствующим именем

У меня была та же проблема, и когда я запускал apt-get update, он выдавал предупреждения типа:

E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' 
  changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. 
  See apt-secure(8) manpage for details.

исправил это, запустив apt-get update --allow-releaseinfo-change, как предложено здесь https://superuser.com/questions/1456989/how-to-configure-apt-in-debian-buster-after-release, похоже, также решил мою проблему с установкой libbz2 -разработчика.

3
17.05.2021, 18:06
3 ответа

Если ваша оболочка является оболочкой bash, вы можете просто сделать следующее, включив Extended Glob:

shopt -s extglob
mv -- !(special.file).bam temp/

чтобы подавить ошибку :"bash: /usr/bin/mv: Argument list too long", когда существует слишком много файлов, соответствующих заданному шаблону, выполните следующие действия:

for file in !(special.file).bam; do
    mv -- "$file" temp/
done

или с помощью команды findи переносимости:

find. -path './*' -prune -type f -name '*.bam' ! -name 'special.file.bam' \
    -exec sh -c 'for file; do mv "$file" temp/; done' sh_mv {} +

удалите часть -path './*' -prune, чтобы найти файлы и в подкаталогах -.

7
28.07.2021, 11:31

Если количество файлов превышает длину строки команды -, вам все равно нужно использовать find. Я бы предложил объединить его с xargsи файлами с нулевым разделителем (\0), например.:

find. -maxdepth 1 -type f -name '*.bam' ! -name 'special.file.bam' -print0 |
xargs -0 mv -t /path/to/destination

Примечание. :всесторонние испытания не проводились, используйте с осторожностью.

2
28.07.2021, 11:31
 find. -maxdepth 1 -type f -name "*.bam" ! -name "special.file.bam" -exec mv {} NewDir \;
2
28.07.2021, 11:31

Теги

Похожие вопросы