Перебор файлов и выполнение над ними операций

Это соответствует «Использовать режим сортировки панели» в разделе «Быстрый поиск» параметров панели:

Screenshot of the panel options, with “Use panel sort mode” highlighted

Это приводит к тому, что при быстром поиске используется параметр «С учетом регистра» панели, на которой он выполняется; вы найдете этот параметр в конфигурации порядка сортировки каждой панели :

.

Screenshot of the panel sort order settings, with “Case sensitive” highlighted

Чтобы настроить быстрый поиск таким образом, чтобы он был глобально нечувствительным к регистру, необходимо установить для параметра quick_search_modeзначение 0. (0 означает «без учета регистра», 1 — «с учетом регистра», 2 — «использовать режим сортировки с помощью панели».)

0
22.10.2019, 00:42
2 ответа

Вы можете использовать basename, чтобы удалить каталог (*)и расширение :

.
for fileref in Ref/*.bed; do
    for filename in Data/*.bed; do
        bedops -e 1 $fileref $filename > "$(basename $fileref.bed)-$(basename $filename.bed).out"
    done
done

(*), потому что for fileref in Ref/*будет повторяться Ref/File1, Ref/File2, поэтому сохранение каталогов вашего выходного файла будет выглядеть как `Ref/File1 -Data/File2.out.

0
28.01.2020, 02:39

Вы можете использовать расширение параметра , чтобы удалить родительские каталоги Refи Data, включая /, и удалить суффикс .bedиз имени файла.

  • ${varname##*/}удалить самый большой шаблон префикса, чтобы удалить родительский путь
  • ${varname%.bed}удалить наименьший шаблон суффикса, чтобы удалить расширение файла .bed
for fileref in Ref/*.bed; do
    fref=${fileref##*/}
    fref=${fref%.bed}
    for filename in Data/*.bed; do
        fname=${filename##*/}
        fname=${fname%.bed}
        bedops -e 1 "$fileref" "$filename" > "${fref}${fname}.out"
    done
done

То же самое можно сделать с помощью команды basename, которая печатает имя файла по заданному пути и, при необходимости, удаляет суффикс:

for fileref in Ref/*.bed; do
    for filename in Data/*.bed; do
        bedops -e 1 "$fileref" "$filename" > "$(basename "$fileref" ".bed")$(basename "$filename" ".bed").out"
    done
done
1
28.01.2020, 02:39

Теги

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