2016-03-24 13 views
0

ファイルの束をハイライト表示し、出力をページしたいと考えています。 問題は、stdinから読み込み中のファイル名が表示されないことです。stdinからの読み込みは少なくなりますが、ファイル名を表示します

標準入力からの読み込みを少なくしてファイル名を表示するにはどうすればよいですか?ここで

は私がやろうとしているものです:

 
for f in *.py; do 
    pygmentize "$f" | less -mR 
done 
+0

'-n $ Fをエコー。 "$ f"を区切ります。 less -mR' – mpez0

+0

@ mpez0、あなたは '{echo -n $ f; "$ f"を区切ります。 } | less -mR' –

+0

@glennjackmanこれはエコー出力をlessに送ります。私はOPが単にファイル名を出力したいと思っていました。何が必要なのかに応じてどちらの方法でも動作します。 – mpez0

答えて

1

あなたは一時ディレクトリを使用してファイルそこを入れ、lessは「本当の」ファイルとしてそれらを参照することができます。

例えば

(ディレクトリを作ることができるmktempを提供するシステム上で):

#!/bin/sh 
mydir=$(mktemp -d) 
trap "cd; rm -rf $mydir" EXIT INT QUIT 
for f in *.py; do 
    pygmentize "$f" >$mydir/"$f" 
    (cd $mydir && less -mR "$f") 
done 
+0

これは1つの解決策であり、きれいに書かれています。私はそれをする必要がないことを望んでいたが、あなたはそれをかなり簡単に見えるようにする。 –

+0

これは簡単に書かれました - 厄介なのは、 'trap'コマンドのためにあなたのシステムに移植可能な部分だけです(これを' dash'でチェックしました)。 –

+0

私は1つの洗練をやりました。ファイルへのパスがある場合、最初にパスを取り除く必要があります。 –

関連する問題