Я хочу перенаправить вывод ls в файл И также добавить постоянную строку в каждый файл, указанный в выходном файле - PullRequest
0 голосов
/ 26 июня 2019

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

Предположим, в моем текущем директоре 3 файла: a.txt, b.txt и c.txt.

Если я сделаю ls> output.txt

Это поместит список каталогов в файл output.txt, который будет иметь (приблизительно)

a.txt
b.txt
c.txt

Теперь я хочу добавить букву «привет» перед каждым именем файла, чтобы файл output.txt выглядел так:

hello a.txt
hello b.txt
hello c.txt

Как мне это сделать ???

1 Ответ

1 голос
/ 26 июня 2019
#!/bin/bash

for file in $(find . -type f -name "*.txt"); do 
  echo "hello $(basename $file)"; 
done

Используйте find, чтобы найти каждый файл в текущем каталоге с расширением .txt, затем echo привет перед именем файла.Используйте basename, чтобы получить только имя файла, иначе оно будет отображаться как ./a.txt

Если вы только хотите искать в текущем каталоге, а не в подкаталогах, то добавьте -depth 1 к команде find.

Обновление: В ответ на комментарий: Большинство конструкций Bash можно превратить в однострочные, используя соответствующие точки с запятой, так что вы можете легко сделать:

for file in $(find . -type f -name "*.txt"); do echo "hello $(basename $file)"; done
...