Можно ли подставить имя файла из ls?

Допустим есть архив с длинным названием, можно ли его имя как-то подставить в текущую строку из списка по ls?
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
не совсем понятна задача
не можете скопировать мышкой и не работает автодополнение ?
узнаём номер нужной строки:
ls -A1 | nl'
если нужны только видимые(без точки в начале имени) файлы то можно упустить ключ A
выводим строку по её номеру:
ls -A1 | awk 'NR==7'
где 7 это пример номера строки с нужным именем файла выданный с помощью команды ls, ставим свой номер.
при желании можно завернуть это в переменную и просто вставлять где нужно:
f=$(ls -A1 | awk 'NR==7')
далее уже можно будет оперировать этой переменной, например:
rm "$f"

п.с.
если нужно больше интерактива то можно воспользоваться утилитой skim(sk) или fzf
f=$(ls | fzf)
для скрытых файлов добавить ключ -A
даст возможность выбрать нужный файл клавишами(верх, низ), а затем(Enter) передать его в переменную.
ну а дальше уже оперируем переменной f
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
shabelski89
@shabelski89
engineer
#!/bin/bash
FILES="/root/temp/*"

#echo $FILES

for file in $FILES
do
if [ "${file: -4}" == ".zip" ]; then
 echo "some string with name of $file"
fi
done


Тратим пару часов на чтение статей и готово!
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
$ select file in $(ls -A1); do break;done
$ echo $file
blablabla.txt


запускаешь, после выбора файла он в переменной $file
Правда работает со списоком файлов, который влезет в длину строки (обычно ~4 kb)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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