Вам необходимо исключить файлы из подпапок, подобных этой:
tar --wildcards --exclude='*/*' -xvzf images.tar.gz '*.jpg'
Пояснение:
--wildcards
означает, что мы указываем файлы для извлечения с помощью подстановочного знака, т.е.*.jpg
-указано позже
--exclude='*/*'
возможность исключить (из выбора для извлечения )все записи с /
в них -т.е. все файлы в подпапках
-xvzf
eXtract, подробный вывод, сначала распаковать gunZip, архивировать из файла
images.tar.gz
имя архива, разумеется
'*.jpg'
шаблон имени файла -мы обещали tar
один, вот он -все, что заканчивается на .jpg
.
Три возможности, которые я могу придумать, (помимо тех, что предложил Дамир ). Во-первых, если это вообще возможно, я бы просто проверил, находитесь ли вы в каталоге с помощью функции «ленивой -загрузки». Это похоже на то, что рекомендовал Дамир, но позволяет избежать накладных расходов, связанных с вашей конфигурацией запуска или исполняемым скриптом.
Создать~/.config/fish/functions/x.fish
:
if [ (pwd) = "/path/to/project` ]
./x.py
else
command x
end
Эта функция загружается только при первом вызове через x
. Это позволяет избежать накладных расходов на добавление его в конфигурацию запуска. Это также все еще функция, поэтому она выполняется в текущей fish
оболочке, а не запускает новую оболочку, как исполняемый скрипт.
Он также использует любую другую команду x
, которая может быть установлена в системе, если вы не находитесь в этом каталоге. Если вам это не нужно, просто удалите блок else
.
Если вам действительно нужно, чтобы функция существовала только тогда, когда вы находитесь в этом каталоге, есть еще два варианта. Во-первых, функции fish могут следить за изменением переменной и запускаться только тогда, когда это происходит. Эта переменная может быть $PWD
для наблюдения за изменением каталога.
Добавьте следующее в~/.config/fish/conf.d/create_x.fish
:
function create_x --on-variable PWD
if [ "$PWD" = "/path/to/project" ]
function x
./x.py
end
else
functions --erase x
end
end
Для этого требуется, чтобы функция create_x.fish
загружалась при запуске, но она будет работать только при смене каталогов. Это определенно менее эффективно, чем первый вариант.
Наконец, вы можете изменить функцию приглашения для проверки текущего каталога. Это кажется расточительным, но:
funced fish_prompt
Добавьте следующее внизу:
functions --erase x
if [ (pwd) = "/path/to/project" ]
function x
./x.py
end
end
funcsave fish_prompt
Это будет проверять, находитесь ли вы в каталоге проекта в каждом приглашении, и будет создавать функцию только в том случае, если вы находитесь.
funcsave
помещает копию «обычного» fish_prompt
в ваш каталог ~/.config/fish/functions
. Удалите его, чтобы вернуться к нормальной функциональности подсказки.
Определенно, по возможности выбирайте первый вариант:-)