Действительно ли возможно удалить префикс папки из команды 'ls'

perl -pe '
    BEGIN {
        open IN, "<replacements" or die $!;
    }

    s/pattern/
        $tmp = <IN>;
        chomp $tmp;
        $tmp
    /xe;
' filename
12
18.10.2018, 09:54
7 ответов
[116811]Вместо [117269]парсинга ls[117270] следует использовать [117271]find[117272]. Тогда вы также можете выполнить [117273]basename[117274] для каждого файла, чтобы удалить ведущие каталоги:[12230]
19
27.01.2020, 19:54
[117501] С помощью GNU [117910] найти[117911] нет необходимости запускать [117912]basename[117913] для каждого отдельного файла, это будет намного быстрее (особенно, если файлов много):


13
27.01.2020, 19:54
[117473] Как сказал Джош Джолли в своем ответе, вы никогда не должны разбирать [117858]ls [117859], вместо этого используйте подход в его ответе. Тем не менее, вот решение [117860]awk[117861] по удалению путей из имен файлов, просто не используйте его с ls:

-F'/'[117863] устанавливает разделитель полей на [117864]/[117865], что означает, что последним полем, [117866]$NF[117867], будет имя файла.[117476].

5
27.01.2020, 19:54
[117575] Как насчет [118009](cd lib && echo *.jar)[118010], предполагая, что в именах файлов нет пробелов или специальных символов. Родительский скрипт никогда не меняет каталог.[117576]
11
27.01.2020, 19:54

найти[117869], вероятно, можно, но если вы [117870] действительно хотите [117871] (вы не хотите) отделить [117872]lib/[117873] от [117874]ls -1[117875], вы можете использовать [117876] sed[117877]:

1
27.01.2020, 19:54
[117503] Альтернативный способ решить ваш запрос - перечислить все файлы, используя [117914]ls -R[117915]. Комбинируйте вывод команды ls с grep, чтобы перечислить только файлы .jar. То же самое можно сделать и с помощью команды:

-1
27.01.2020, 19:54

Вы можете сделать это, используя xargs с параметром --max-args (или более коротким псевдонимом -n):

ls --quoting-style=c -1 lib/*.jar | xargs --max-args 1 базовое имя ls --quoting-style=c -1 lib/*.jar | xargs -n 1 базовое имя

Обратите внимание, что мы используем --quoting-style=c, чтобы убедиться, что пробелы в именах файлов не испортят xargs.

0
27.01.2020, 19:54

Теги

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