
ユーザーがファイルをコピーして貼り付けて選択できるスクリプトを作成しました。次に、ファイルに対してgrepを実行します。ユーザーが数字だけを入力できるように、ディレクトリ内の各ファイルの前に数字を入れることができるかどうか疑問に思います。
私が試したこと:
ls -l
その後、ls | wc -l
ユーザーはそのファイル番号を選択するようにしましたが、幸運ではありませんでした。- 次に、
ls -i
ファイルのノード番号を使用してgrepを試しましたが、成功しませんでした。
答え1
ではキーワードを使用bash
できますksh
。zsh
select
select file in *; do
grep 'something' "$file"
done
select
リストを表示するときに使用方法の説明を提供するには、次のように設定します。$PS3
今後たとえば、次のようにselect
なります。
PS3='number of file to grep in, ^C to exit: '
答え2
lsの前に行番号を入れる最も簡単な方法はおそらく
ls -1 | cat -n
その後、ファイル番号Nを選択して試すことができます。
ls -1 | sed -n Np
答え3
ちなみに、inode番号を使用して次のものを使用できますls
。
ls -i
次のように出力されます。
$ ls -i
13107210 file
13238318 dir
13109301 script.sh
しかし、この数値は韓国cat -n
に比べると依然としてかなり大きな数値だ。ただし、この方法の最大の利点は、常に正しいファイルを見つけることができることです。一方cat -n
、+ を使用すると、sed
2 つのコマンドの間にディレクトリに新しいファイルが作成された場合は、別のファイルを使用できます。
答え4
また、percol、fzy、smenu、友達もチェックしてみてください。彼らは喜んで標準入力を取り、対話型フィルタを含むユーザーフレンドリーな選択メニューを提供してから、選択した行をパイプに戻します。