@MartinVegter
Есть файл ~/.config/gtk-2.0/gtkfilechooser.ini
. Он должен выглядеть так, как написал Stefano:
[Filechooser settings]
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=377
GeometryY=132
GeometryWidth=612
GeometryHeight=528
SortColumn=name
SortOrder=ascending
StartupMode=recent
В этом файле не было переменной DefaultFolder
, но я нашел переменную StartupMode=recent
, которую я изменил на StartupMode=cwd
. Это работает только на приложениях GTK 2, таких как mousepad
.
Я не знаю, есть ли файл настроек для приложений GTK 3, таких как gedit
, но кажется, что файловый переключатель GTK 3 уже устанавливает расположение в текущую папку по умолчанию.
ls */
Это выведет список содержимого всех не -скрытых подкаталогов в текущем каталоге. Поскольку у вас есть только подкаталоги с числовыми именами, это покажет их содержимое.
Шаблон подстановки оболочки *
будет распространяться на все не -скрытые имена в текущем каталоге. Добавление /
в конце шаблона заставляет шаблон расширяться только до каталогов (, поскольку каталоги, отличные от -, не могут иметь /
в своих именах ).
В оболочке zsh
следующий шаблон подстановки имен файлов будет расширяться только до обычных файлов в каждом подкаталоге
*/*(.)
Чтобы сделать что-то с этими именами, которые совпадают, вы должны перебрать расширение этого шаблона глобуса:
for pathname in */*(.); do
# use "$pathname" here
done
В bash
или sh
вы должны вместо этого вызвать небольшой скрипт из find
:
find. -mindepth 2 -maxdepth 2 -type f -exec sh '
for pathname do
# use "$pathname" here
done' sh {} +
Но на самом деле это просто причудливая манера письма
for pathname in */*; do
[ ! -f "$pathname" ] && continue
# use "$pathname" here
done
за исключением того, что вариант find
будет пропускать символические ссылки на обычные файлы и включать скрытые имена (установите параметр оболочки dotglob
в bash
, чтобы включить эти ).
Опять же, это сделало бы то, что вы хотели (искать в каталогах с числовыми именами, )потому что у вас есть только подкаталоги с числовыми именами.
Предполагая, что могут быть и другие подкаталоги,
for pathname in */*; do
[ ! -f "$pathname" ] && continue
case $(dirname "$pathname") in
*[!0-9]*) continue
esac
# use "$pathname" here
done
или с bash
,
for pathname in */*; do
if [ ! -f "$pathname" ] ||
[[ $(dirname "$pathname") == *[!0-9]* ]]
then
continue
fi
# use "$pathname" here
done
Эти циклы будут перебирать все имена в подкаталогах,но пропустит любое имя, не относящееся к обычному файлу (или символическую ссылку на один из них ), а также пропустит любой файл в подкаталоге, имя которого содержит что-либо, кроме цифры.
С опцией оболочки extglob
в bash
вы можете сделать это немного короче:
shopt -s exglob
for pathname in +([0-9])/*
[ ! -f "$pathname" ] && continue
# use "$pathname" here
done
Шаблон +([0-9)/
будет распространяться на имена каталогов, в именах которых есть только цифры. Это также будет работать в zsh
, если вместо extglob
будет установлена опция KSH_GLOB
.
С помощью GNU find
вы, очевидно, могли выбрать свои числовые каталоги, а затем просмотреть их содержимое в цикле:
find. -maxdepth 1 -type d -regex '.*/[0-9]+$' -exec sh '
for dirpath do
for pathname in "$dirpath"/*; do
[ ! -f "$pathname" ] && continue
# use "$pathname" here
done
done' sh +
но обычно я не рекомендую использовать регулярные выражения для имен файлов или каталогов, поскольку они в основном предназначены для сопоставления текста в текстовых файлах. GNU find
явно поддерживает сопоставление путей с регулярными выражениями, потому что программное обеспечение GNU старается быть как можно более удобным.
Вы получаете эти результаты, потому что find
просматривает все содержимое текущего каталога, если не указано иное. Если вы просто хотите увидеть файлы внутри пронумерованных каталогов с именем 6 -11, которые находятся в текущем каталоге, тогда все, что вам нужно, это:
Поскольку нет 9, вы можете использовать этот:
find {6,7,8,10,11} -type f
Это расширит только включенные номера.
Если у вас было от 6 -11 со всеми числами между ними:
find {6..11} -type f
Это будет искать только в каталогах с именем 6 -11 и возвращать файлы внутри.
Если это единственные каталоги внутри текущего каталога,который выглядит так в соответствии с вашими результатами, то вы также можете просто сделать это:
find. -mindepth 2 -type f
Это укажет ему начать на один уровень ниже текущего каталога или на два уровня глубже.