Можно ли создать цикл, который ищет все файлы в каталоге и отображает тот, который я хочу?

$ соответствует концу строки, поэтому ваш шаблон должен быть )$, а не $), как в вашем примере.

Также здесь не нужен xargs, безопаснее использовать флаг -exec в fine:

find . -name test.txt -exec sed -i '/PATTERN/ s/)$/); /' '{}' +

Если ваша версия find не работает с + в конце, то используйте \; вместо этого (спасибо @glenn-jackman):

find . -name test.txt -exec sed -i '/PATTERN/ s/)$/); /' '{}' \;

Наконец, нет необходимости во флаге g в идиоме s/something$//, поскольку в каждой строке есть только одно вхождение $.

0
30.12.2018, 14:43
1 ответ

Надеюсь, цикл forне нужен. попробуй это,

DIRECTORY_PATH=/path/to/dir
FILE_LIST=(`ls -p $DIRECTORY_PATH | grep -v / `)
printf '%s\n' "${FILE_LIST[@]}" | nl -v 1
read -r -p "please enter index number to open: " fileNO
cat $DIRECTORY_PATH/${FILE_LIST[$fileNO]}
  • FILE_LISTсписок только файлов в данном каталоге
  • printfчтобы перечислить массив файлов один за другим
  • nlномер каждой строки
  • readдля получения ввода во время выполнения
  • наконец, catфайл, индексируя массив
0
28.01.2020, 04:06

Теги

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