Как перенаправить вывод команды в ls? [дубликат]

Это было просто плохое понимание использования cut и sed.

Небольшая настройка одного лайнера:

strings -f -e l *.exe | sed -e :a -e '/FileVersion$/N; s/FileVersion\n/FileVersion /; ta' | grep FileVersion | sed 's/.*FileVersion//'

Таким образом, строка использует -f для имени файла, -e для необходимой информации о файле.

sed используется для удаления и выхода Fileversion

Затем grep, чтобы найти эту информацию на экране

, затем последний sed для удаления Content перед Fileversion (это неправильный способ сделать это, я понимаю, что sed сложные шаблоны)

sed 's/.*FileVersion//'

Если кто-то хочет опубликовать правильное форматирование для sed, я с радостью обновлю это. К сожалению, шаблоны и понимание sed не совсем понятны.

4
16.02.2019, 12:29
3 ответа

lsпринимает входные данные не из стандартного ввода, а только из аргументов:

Попробуйтеls -l "$(which python3)"

13
27.01.2020, 20:44

ls не читает из канала. На самом деле lsвообще не использует свой стандартный ввод.

Вместо этого вам нужно передать то, что вы хотите запустить ls -lчерез командную строкуls:

ls -l "$( which python3 )"

При этом используется подстановка команды в командной строке ls -l, которая будет расширена до вывода команды which. Затем он будет использоваться в качестве аргумента командной строки для ls.

В качестве альтернативы:

ls -l "$( command -v python3 )"

Связанные:

12
27.01.2020, 20:44

Другие ответы хороши, но это тоже удобно:

which python3 | xargs ls -l

xargsполучает значения из stdinи добавляет их в качестве аргумента строки команды -к указанной программе.

6
27.01.2020, 20:44

Теги

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