lsコマンドで相対パスを付けてファイル名を出力する方法
ここ最近、何回かブログでWebカメラやfehコマンドについて書いてます。そしてWebカメラで定点撮影している写真で最新のものを確認する時に
とすればコマンド一行で最新の写真が表示できます。便利便利。
さて、このコマンドは写真が入っているフォルダにて実行する必要があります。それはなぜかというと、例えば別のフォルダにいる状態(写真はwebcamフォルダに入っていて、いまいるのはその一つ上のフォルダ)だと以下のコマンドではファイル名しか受け取れないからです。
現在居るフォルダには当然そのファイルは存在しないので(写真はwebcamフォルダに存在する)、その出力をfehコマンドに渡してもエラーが表示されてしまいます。
そこで別フォルダにいても最初に示したコマンドを有効にするには、ファイル名だけでなく相対パスが付いた状態のものをlsコマンドで出力する必要があるわけです。
そしてlsコマンドには"-d"オプションがあり、これを用いることで相対パス付きでファイル名を出力することが出来ます。このオプションは使い方が少し独特でファイル名に相対パスを付けて出力したい場合は
とフォルダの後ろにワイルドカードを付ける必要があります。これでwebcamフォルダ内のファイルが相対パス付きで表示されます。そして、これを最初に示したコマンドに適用すると
となります。これによりたとえ他のフォルダにいたとしても、コマンド一行で最新の写真が確認出来るというわけです。
今回の話はfehコマンドに絡めたものですが、このlsコマンドの使い方はその他にもいろいろと応用できるかと思います。
$ 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コマンドの使い方はその他にもいろいろと応用できるかと思います。
コメント
コメントを投稿