Как удалить каталоги в правильном порядке, чтобы удалить пустые?

Фактически, если вы так понимаете, исполняемый файл, указанный в строке shebang, является просто исполняемым файлом. Имеет смысл использовать какой-нибудь текстовый интерпретатор в качестве исполняемого файла, но в этом нет необходимости. Просто для пояснения и демонстрации я провел довольно бесполезный тест:

#!/bin/cat
useless text
more useless text
still more useless text

Назвал файл test.txt и установил исполняемый бит chmod u + x test.txt , затем «назвал» его: ./test.txt . Как и ожидалось, выводится содержимое файла. В этом случае кошка не игнорирует линию шебанг. Он просто выводит все строки. Таким образом, любой полезный интерпретатор должен иметь возможность игнорировать эту строку shebang. Для bash, perl и PHP это просто строка комментария. Так что да, они игнорируют строку shebang.

1
28.11.2016, 01:59
3 ответа

Я предполагаю, что это известная проблема... как люди обычно решают ее в сценарии оболочки?

Они передают список файлов и каталогов в sort -r.

Если вы получаете список файлов и каталогов от find, вы также можете использовать опцию -depth для обеспечения обхода последовательностей.

1
27.01.2020, 23:46

Неважно, я понял это независимо.

Это можно сделать с помощью awk . Обратите внимание, что это решение не допускает новые строки в имени файла.

awk -- '{a=$$0;b=$$0;print(gsub("/","/",a)-sub(/\/$$/,"aaa",b),$$0)}' INPUT_FILE.txt \
    |  "$(call Q2,/usr/bin/sort)" -k1,1nr \
    |  cut -d " " -f 2-

И пока я здесь - строки можно дедуплицировать с помощью следующего:

awk -- '{pos[$$0] = NR} END { for(key in pos) reverse[pos[key]] = key; for(nr=1;nr<=NR;nr++) if(nr in reverse) print reverse[nr] }' INPUT_FILE.txt

Обратите внимание, что дедупликация критична для предотвращения экспоненциального увеличения времени, если вы закончите повторение .

0
27.01.2020, 23:46

Вы можете попробовать упорядочить файлы по количеству косых черт в нем (по убыванию), таким образом вы должны решить проблему с упорядочением.

0
27.01.2020, 23:46

Теги

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