Получить расширения внутри директории bash - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь получить все расширения в каталоге, передаваемые как параметр $ 1. Проблема в том, что я получаю расширения, которые не находятся внутри $ 1. Я использую команду cd, чтобы попасть в каталог в первой строке, но кажется, что она не работает.

cd $1

 find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u > $1extensions.txt

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Очевидно, что вы не говорите об этом, потому что в find нет ошибки, которая будет перечислять файлы за пределами указанного каталога, и в вашей Perl-программе нет ошибки, которая будет изобретать расширения.

$ find
.
./foo
./foo/a.good
./a.bad
./script

$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u > $1extensions.txt

$ ./script foo

$ cat foo/fooextensions.txt
good
txt        <-- From the output file you created inside the directory in which you search.
0 голосов
/ 11 ноября 2018

Вы можете попробовать следующую команду Perl:

perl -MList::Util=uniq -sE '
   chdir $dir; say for uniq map { /\.([^.\/]+)$/ ? $1 : () } grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...