Вы могли использовать find
:
find . -maxdepth 1 -type f -exec ls -li '{}' \;
или, для получения ls
- как вывод:
find . -maxdepth 1 -type f -printf '%i %M %n %u %g %kK %Tc %p\n'
Парсинг ls
плохая идея, так как она может часто вести для беспокойства.
Если Вы действительно хотите использовать ls
непосредственно, Вы могли сделать это:
ls -li | gawk '$2!~/d/'
вводит класс класса символов и ]
закрывает его.
Если SED видит только ]
(I.e. Команда закрытия), это будет хорошо, SED предполагает, что это не специальная команда.
Используя только [
[ (без закрытия ]
) Смущает SED
, поэтому он должен быть сбежен.
На боковой заметке нет необходимости в
G
(Global) flag (Global) (только в одной строке) [
в замене. Мне удалось ваше изменение с
sed -e "s/]/']/" -e "s/\[/['/"
Archemar объяснил, почему это не удалось на [
, вот другой способ сделать эту конкретную замену:
$ sed "s/^./['/;s/.$/']/" file
['AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB']
Или, используя и
, что означает "все, что только что совпало":
$ sed "s/^./&'/;s/.$/'&/" file
['AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB']