apt-get install manpages-dev
То же самое с [117659]rm[117660], [117661]rmdir[117662] и так далее. Оболочка изменяет [117663]~[117664] на [117665]/home/greg[117666] перед передачей ее в команды, если только вы не процитируете ее или не уклонитесь от нее. Вы можете увидеть это с помощью [117667]echo[117668]:
Вы захотите быть осторожными, потому что [117669]rm -Rf ~[117670] будет катастрофой. Я предлагаю, если сомневаюсь, сначала переименовать его ([117671]mv -i \~ newname[117672])) тогда вы можете изучить [117673]newname[117674], чтобы убедиться, что вы хотите удалить его, а затем удалить его.[117296].
-Z
- выводить NUL после имени каждого файла с помощью grep -l
, а не менять новые строки на NUL в выводимых им строках. Так что xargs -0
видит только одну огромную запись (с несколькими символами новой строки), так как NUL не делимитирован, так что это только один аргумент для передачи в rm
и он, вероятно, больше максимального размера аргумента (128кБ на Linux) и в любом случае, нет такого файла под названием .... ffd7ba85b0577b90c0fb1b3922303c486127d4
.
Просто сделайте:
rm [0-9a-f][0-9a-f]*
Или, если список слишком большой:
printf '%s\0' [0-9a-f][0-9a-f]* | xargs -r0 rm
Или с zsh
:
autoload zargs # best in ~/.zshrc
setopt extendedglob # ditto
zargs [0-9a-f](#c2)* -- rm
Или с ksh93
:
command -x rm {2}([0-9a-f])*
Или:
find . ! -name . -prune -name '[0-9a-f][0-9a-f]*' -exec rm {} +
Остерегайтесь, что в не-С локалях [a-f]
может совпадать больше, чем [abcdef]
.
В зависимости от типа файловой системы вы можете запускаться с ограничением по имени файла. Смотрите:
http://en.m.wikipedia.org/wiki/Comparison_of_file_systems
В частности, в разделе "Ограничения"
Вы можете проверить тип файловой системы, если не знаете, как она используется:
$ cat /etc/fstab
Я бы посоветовал изменить выбранные вами команды на что-то вроде:
find . -name '^[0-9a-f][0-9a-f]' -print0 | xargs -0 rm
или другой альтернативный вариант
find . -name '^[0-9a-f][0-9a-f]' -exec rm {} \;
Вам будет лучше, чтобы просто найти. Что-то вроде Найти -type F-iname '[0-9A-F] [0-9A-F] *' -delete
должен сделать это. Попробуйте сначала с -print вместо -делета, конечно, конечно.