Как получить список только файлов (не каталогов) из пакета?

Здесь нет проблем.

enter image description here

Я использую Xorg-Edgers Fresh X Crack PPA, как было найдено здесь

[ 115] Результаты в течение 13.04 были очень хорошими

7
задан 30.05.2019, 01:02

4 ответа

Просто переберите каждую строку в dpkg -L elixir и проверьте, является ли линия путем к обычному файлу , а затем echo это:

while read f; do [ -f "$f" ] && echo "$f"; done < <(dpkg -L elixir)

Ваша идея с помощью [ 113] выглядит хорошо, но find

  1. не принимает stdin и
  2. выполняет поиск по заданному пути, в то время как вы хотите просто проверить свойства одного заданного пути,
  3. [ 118]

    , так что здесь не тот инструмент.

11
ответ дан 24.10.2019, 16:45

Это должно быть возможно с xargs и тестом оболочки, например,

dpkg -L elixir | xargs sh -c 'for f; do [ -d "$f" ] || echo "$f"; done'
.
11
ответ дан 24.10.2019, 16:45

Другим вариантом было бы сравнить выходные данные dpkg с результатами find для файлов:

comm -12 \
   <(dpkg -L kate | sort ) \
   <(find $( dpkg -L kate ) -maxdepth 1 -type f | sort )
3
ответ дан 24.10.2019, 16:45

С perl oneliner:

dpkg -L elixir | perl -nE 'chomp; say unless -d'
  • dpkg -L перечислит все файлы / каталоги в пакете и выведет его на stdout
  • perl -nE будет повторять следующий perl-код по каждой строке вывода dpkg, оставляя текущую строку в переменной аргумента по умолчанию (называемой

    С perl oneliner:

    [110]
    • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
    • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
    • chomp удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию (

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • say - это сокращение от say

        С perl oneliner:

        [110]
        • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
        • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
        • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
        • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
        • unless -d (сокращение от unless -d

          С perl oneliner:

          [110]
          • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
          • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
          • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
          • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
          • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

          Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

          ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

        Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

        , которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • unless -d (сокращение от unless -d

        С perl oneliner:

        [110]
        • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
        • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
        • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
        • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
        • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

        Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

        ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      ).
    • say - это сокращение от say

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • unless -d (сокращение от unless -d

        С perl oneliner:

        [110]
        • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
        • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
        • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
        • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
        • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

        Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

        ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      , которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
    • unless -d (сокращение от unless -d

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

    Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

    )
  • chomp удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию (

    С perl oneliner:

    [110]
    • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
    • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
    • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
    • say - это сокращение от say

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • unless -d (сокращение от unless -d

        С perl oneliner:

        [110]
        • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
        • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
        • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
        • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
        • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

        Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

        ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      , которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
    • unless -d (сокращение от unless -d

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

    Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

    ).
  • say - это сокращение от say

    С perl oneliner:

    [110]
    • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
    • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
    • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
    • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
    • unless -d (сокращение от unless -d

      С perl oneliner:

      [110]
      • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
      • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
      • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
      • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
      • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

      Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

      ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

    Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

    , которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
  • unless -d (сокращение от unless -d

    С perl oneliner:

    [110]
    • [111] перечислит все файлы / каталоги в пакете и выведет его на stdout
    • [112] будет повторять следующий perl-код по каждой строке вывода [113], оставляя текущую строку в переменной аргумента по умолчанию (называемой [114])
    • [115] удаляет завершающий перевод строки из stdin , таким образом оставляя только имя файла в переменной аргумента по умолчанию ([116]).
    • [117] - это сокращение от [118], которое выводит аргумент по умолчанию для stdout , если выполняется следующее условие.
    • [119] (сокращение от [1110]) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

    Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

    ) является условием для предыдущего say и означает, что оно будет истинным, только если указанное имя файла не является каталогом

Таким образом, он будет отображать все имена файлов, которые не являются каталогами. Если вы хотите отображать только каталоги, вы должны заменить unless на if. Или, если вам нужны только символические ссылки, вы можете использовать -l вместо -d и т. Д. (Подробнее см. man perlfunc)

3
ответ дан 24.10.2019, 16:45

Теги

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