xargs rm -r с регулярным выражением возвращает "такого каталога нет" - PullRequest
0 голосов
/ 04 августа 2020

У меня есть папка с несколькими подкаталогами b1_3, b1_4 et c. Внутри этих подкаталогов у меня есть файлы и другие подкаталоги, и имена этих подкаталогов следуют шаблону alpha[digits]_etc, как таковой

lfppfs@lfppfs:~$ ls -l Desktop/shape/PD_sigma4/b*

Desktop/shape/PD_sigma4/b1_3:
total 364
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha0.0_b150_t10000_s5_qmat0.01
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha0.0_b150_t10000_s5_qmat0.1
-rwxr-xr-x 1 lfppfs lfppfs  1143 ago  4 09:07 alpha0.sh
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha10.0_b150_t10000_s5_qmat0.01
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha10.0_b150_t10000_s5_qmat0.1
-rwxr-xr-x 1 lfppfs lfppfs  1144 ago  4 09:07 alpha10.sh
-rwxr-xr-x 1 lfppfs lfppfs     7 ago  4 09:07 forbiden-sites.in
-rwxr-xr-x 1 lfppfs lfppfs   984 ago  4 09:07 input0alpha0.in
-rwxr-xr-x 1 lfppfs lfppfs   992 ago  4 09:07 input0alpha10.in

Desktop/shape/PD_sigma4/b1_4:
total 364
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:09 alpha0.0_b150_t10000_s5_qmat0.01
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha0.0_b150_t10000_s5_qmat0.1
-rwxr-xr-x 1 lfppfs lfppfs  1143 ago  4 09:07 alpha0.sh
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha10.0_b150_t10000_s5_qmat0.01
drwxr-xr-x 2 lfppfs lfppfs 12288 ago  4 09:07 alpha10.0_b150_t10000_s5_qmat0.1
-rwxr-xr-x 1 lfppfs lfppfs  1144 ago  4 09:07 alpha10.sh
-rwxr-xr-x 1 lfppfs lfppfs     7 ago  4 09:07 forbiden-sites.in
-rwxr-xr-x 1 lfppfs lfppfs   984 ago  4 09:07 input0alpha0.in
-rwxr-xr-x 1 lfppfs lfppfs   992 ago  4 09:07 input0alpha10.in

Я хочу удалить только подкаталоги alpha[digits]_etc из всех каталогов b1_[digits] (обратите внимание, что есть также файлы с именем alpha[digits].[digits].sh, которые я не хочу удалять). Я попытал счастья с несколькими командами, включая

ls Desktop/shape/PD_sigma4/b* | grep -P "alpha\d*0\.0" | xargs echo rm -r | bash

Но оболочка возвращает

rm: cannot remove 'alpha0.0_b150_t10000_s5_qmat0.01': No such file or directory
rm: cannot remove 'alpha0.0_b150_t10000_s5_qmat0.1': No such file or directory
etc

Не знаю, что я делаю не так. Надеюсь, мой вопрос ясен.

ИЗМЕНИТЬ

Я также пробовал использовать find Desktop/shape/PD_sigma4 -regextype posix-egrep -regex "b\d_\d\/alpha\d*0\.0" -delete, но затем оболочка возвращает все файлы внутри b1_[digits], включая те, которые я не делаю. не хочу удалить.

1 Ответ

0 голосов
/ 05 августа 2020

Как указано в комментариях @ AdemÖztaş:

find ~/Desktop/shape/PD_sigma4/b1_* -regextype posix-egrep -type d -name "alpha[0-9]*" -exec rm -r {} +

-type d соответствует только каталогам, а не соответствует файлам alpha[digits].[digits].sh. Действие -delete не удаляет непустые каталоги, поэтому мне понадобилось -exec rm -r {} +

...