lsコマンドで相対パスを付けてファイル名を出力する方法

ここ最近、何回かブログでWebカメラやfehコマンドについて書いてます。そしてWebカメラで定点撮影している写真で最新のものを確認する時に
$ ls | tail -1 | feh -f - -g 500x400

とすればコマンド一行で最新の写真が表示できます。便利便利。


さて、このコマンドは写真が入っているフォルダにて実行する必要があります。それはなぜかというと、例えば別のフォルダにいる状態(写真はwebcamフォルダに入っていて、いまいるのはその一つ上のフォルダ)だと以下のコマンドではファイル名しか受け取れないからです。
$ ls webcamフォルダ | tail -1

現在居るフォルダには当然そのファイルは存在しないので(写真はwebcamフォルダに存在する)、その出力をfehコマンドに渡してもエラーが表示されてしまいます。

そこで別フォルダにいても最初に示したコマンドを有効にするには、ファイル名だけでなく相対パスが付いた状態のものをlsコマンドで出力する必要があるわけです。
そしてlsコマンドには"-d"オプションがあり、これを用いることで相対パス付きでファイル名を出力することが出来ます。このオプションは使い方が少し独特でファイル名に相対パスを付けて出力したい場合は
$ ls -d webcamフォルダ/*

とフォルダの後ろにワイルドカードを付ける必要があります。これでwebcamフォルダ内のファイルが相対パス付きで表示されます。そして、これを最初に示したコマンドに適用すると
$ ls -d webcamフォルダ/* | tail -1 | feh -f - -g 500x400

となります。これによりたとえ他のフォルダにいたとしても、コマンド一行で最新の写真が確認出来るというわけです。

今回の話はfehコマンドに絡めたものですが、このlsコマンドの使い方はその他にもいろいろと応用できるかと思います。

コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

MPV(動画再生ソフト)のキーボード操作方法