2013-11-19 2 views
0

У меня есть сценарий, и я использую это, чтобы найти и список файлов, которые заканчиваются .txt в папке TMPДобавить текст в каждой строке команды находят

find /tmp -type f \(-name '*.txt' \) |cut -c14- 

Выход что-то вроде этого:

xpto.txt 
abc.txt 
xyz.txt 

Но я хочу, чтобы добавить индекс на самого начало каждой строки

1 - xpto.txt 
2 - abc.txt 
3 - xyz.txt 

Может кто-нибудь мне помочь? я все еще учился bash, начался 1 месяц назад.

+2

[ 'Человек nl'] (http://www.ss64.com/bash/nl.html) – tripleee

+0

[bashref] (http://www.gnu.org/software/bash/ manual/bashref.html) –

ответ

2

Вы можете сделать:

find /tmp -type f \(-name '*.txt' \) |cut -c14- | nl 

Но команда find не всегда работает очень дружен с трубами в моем опыте.

так что вы могли бы сделать и это:

cd /tmp ; ls *.txt | nl 

или это (для другой макет вывода) вывода команды трубопровода

cd /tmp ; ls *.txt | grep -n "" 
+0

Я думаю, я могу использовать это, спасибо – wormwood87

+0

Но 'find' также будет отображать файлы, находящиеся в подкаталоге, в то время как' ls' не будет. – pfnuesel

+0

@pfnuesel, это очень правильное замечание ... чтобы оно работало с 'find', однако команда' cut' также нуждается в некоторой обработке, чтобы она работала. Также ему, вероятно, понадобится 'xargs' для обработки вывода' find' дальше. Нет вреда в попытках разного подхода :-) – thom

2

Приступим к следующему awk

awk -v OFS="-" '{print NR, $0}' 

perl вариант

perl -lne 'print $.,"-",$_' 
+0

спасибо, я тоже попробую это сделать – wormwood87

Смежные вопросы