Software」カテゴリーアーカイブ

PC関連のソフトウェアに関するカテゴリーです。

findコマンドと-execオプションの使い方

findはディレクトリ内のファイルを検索するためのコマンドです。
基本的な使い方は以下の通りです。

$ find ./
.
./01
./01/aaa.txt
./01/bbb.txt
./01/ccc.jpg
./02
./02/ddd.png
./02/eee.zip

findと検索したいディレクトリを入力するとディレクトリ内のファイルを表示してくれます。

ワイルドカードで検索するファイル名を指定

特定のファイル名のみ検索したい場合は-nameオプションが使えます。
使い方は次のような感じです。

$ find ./ -name "*.txt"
./01/aaa.txt
./01/bbb.txt

タイプを指定

ファイル名ではなくファイルの種類(通常ファイルとかディレクトリとか)を指定して
検索したい場合は-typeオプションを使います。

$ find ./ -type f
./01/aaa.txt
./01/bbb.txt
./01/ccc.jpg
./02/ddd.png
./02/eee.zip

fは通常ファイルという意味です。ディレクトリを検索したい場合はdと入力します。

検索したファイルに対してコマンドを実行

検索したファイルに対してコマンドを実行したい場合は-execオプションを使います。
使い方は次のような感じです。

$ find ./ -type f -exec du -h {} \;
4 ./01/aaa.txt
4 ./01/bbb.txt
12 ./01/ccc.jpg
160 ./02/ddd.png
156 ./02/eee.zip

-execに続いて実行したいコマンドを入力します。
最後は\;と入力してください。

{}は検索したファイル名に置き換えて実行されますので、実際には

du -h ./01/aaa.txt
du -h ./01/bbb.txt

のようなコマンドが実行されていることになります。

duはファイルサイズを調べるコマンドです。

-execでパイプ|を使いたい場合

シェル(shell)の基本的な機能としてパイプ(pipe)というものがあります。
これを使ってコマンドの実行結果を次のコマンドに渡すことができます。

$ du -h ./01/aaa.txt | cut -c -1
4

こんな感じで使って、1つ目のコマンド「du -h ./01/aaa.txt」の実行結果「4 ./01/aaa.txt」を2つ目のコマンド「cut -c -1」に渡し、最終的に4という結果を得るという風に使います。

cut -c -1は入力内容の最初の1文字を出力するコマンドです。

パイプはシェルを使う時に便利な機能なのですが、残念ながらfindコマンドでは使うことができません。ですが、少し工夫することで使えるようになります。

$ find ./ -type f -exec sh -c "du {} | cut -c -1" \;
4
4
1
1
1

-execに直接実行したいコマンドを指定する代わりにsh -cを使うという方法です。

-cは指定された文字列をコマンドとして実行するシェル(sh)のオプションですが、これを使ってパイプが使えないという制限を回避できます。

bashとかzshなどでも-cオプションがあるので同じ方法が使えます。

-execでバッククォート`を使いたい場合

これもシェルの基本的な機能なのですが、バッククォートというものがあります。

$ a=`dirname ./01/aaa.txt`
$ b=`basename ./01/aaa.txt`

こんな感じで使うとコマンドの実行結果を変数に保存することができます。

dirnameはディレクトリ部分、basenameはファイル名部分の文字列を表示するコマンドです。

$ echo $a - $b
./01 - aaa.txt

残念ながらこれもfindでは使えません。しかも、バッククォート内で{}が使えないのでsh -cでコマンドを実行するという方法も使えません。

ですが、こちらもちょっとした工夫で目的のコマンドを実行することができます。

$ find ./ -type f | while read line; do
>   a=`dirname $line` && b=`basename $line` && echo $a - $b
> done
./01 - aaa.txt
./01 - bbb.txt
./01 - ccc.jpg
./02 - ddd.png
./02 - eee.zip

注意点ですが、パイプ以降の部分はfindコマンドではないので{}は使えません。$lineで1行ごとの出力結果を得られるので、それを使う形になります。

※パイプを使わずfindの実行結果をテキストファイルに保存しても同じことができます。

Raspberry PiにVivaldiをインストールする方法

Raspberry PiでWebブラウザ「Vivaldi」を使いたい場合は次のような感じでインストールできます。

Vivaldiのインストール方法

1. Vivaldiの公式サイト(https://vivaldi.com/download/)から「Linux DEB ARM」のファイル(.deb)をダウンロードします。

2. aptコマンドを使ってVivaldiをインストールします。

$ sudo apt install vivaldi-stable_5.7.2921.65-1_armhf.deb

これでインストールは完了です。

メインメニューから[Internel] » [Vivaldi]もしくはターミナルからvivaldi [enter]で起動できます。

VivaldiでNetflixを使いたい場合

user agentを下記の文字列に変更することでNetflixが使えるようになるみたいです。

Mozilla/5.0 (X11; CrOS armv7l 10895.56.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.131 Safari/537.36

user agentはextension(User-Agent Switcher for Google Chromeなど)を使うか、もしくはコマンドラインから--user-agentオプションで変更できます。

$ vivaldi --user-agent="Mozilla/5.0 (X11; CrOS armv7l 10895.56.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.131 Safari/537.36"

リンク

Download Vivaldi | Vivaldi Browser
https://vivaldi.com/download/

Running Vivaldi on Raspberry Pi | Vivaldi Browser Help
https://help.vivaldi.com/desktop/install-update/raspberry-pi/

mplayerでDVD-Videoを扱うためのTIPS

Linuxで使える動画アプリmplayerに関するメモです。
Windowsバージョンもあります。詳細はリンクを参照してください。

DVD-Videoを再生する基本コマンド

単にDVD-Videoの再生したい場合

$ mplayer dvd://1

チャプター2から4のみ再生したい場合

$ mplayer dvd://1 -chapter 2-4

タイトル2を再生したい場合

$ mplayer dvd://2

メニューを使用したい場合

$ mplayer dvdnav://1 -mouse-movements                                                           

-mouse-movementsオプションを外した場合はキーボードのみの操作になります。

HDDにバックアップしたDVD-Videoの取り扱い

コピーガードのかかっていないDVD-Videoの場合

$ cp -r /mnt/dvd /path/to/directory
$ ls /path/to/directory
AUDIO_TS/  VIDEO_TS/

のような感じで普通のファイルと同様の手順でHDDにバックアップすることができます。

このバックアップしたファイルをDVD-Videoとして再生したい場合は-dvd-deviceオプションを使って次のようなコマンドを入力します。

$ mplayer dvd://1 -dvd-device /path/to/directory

DVD-Videoの内容をvobに変換

DVD-Videoの内容をvobファイルとしてdumpしたい場合は-dumpstream-dumpfileオプションを使って次のようなコマンドで出力できます。

$ mplayer dvd://1 -dumpstream -dumpfile dump.vob

-dumpstream-chapterオプションと併用できますので、例えばチャプターごとに分割したvobファイルを作成したい場合は

$ mplayer dvd://1 -chapter 1-1 -dumpstream -dumpfile chapter-1.vob
$ mplayer dvd://1 -chapter 2-2 -dumpstream -dumpfile chapter-2.vob

のような感じで出力できます。

ちなみに、収録されているチャプター数とかタイトル数などが不明な場合は-identifyオプションで調べることができます。

$ mplayer dvd://1 -identify

MPlayer homepage
http://www.mplayerhq.hu/

MPlayer & MEncoder Builds for Windows
https://mplayerwin.sourceforge.net/downloads.html