Linux メモ2024年2月3日 | |
find による条件付きコマンド実行たとえば、ディレクトリツリー内にある "file" という名前の同一のファイルすべてを新しいものに置き換えることを考える。新しいファイル "file_new" をディレクトリツリーのルートに置き、そこで以下のように実行する。
$ find . -name file -exec cp file_new {} \;
"-name" で検索ファイル名を指定、"-exec" で実行コマンドを指定している。"{}" は条件に適合したファイルのパスに置き換えられる。 オプション
標準出力をコマンドの引数に渡すxargs を使えば、標準出力をコマンド引数に渡して次々とコマンド実行することが可能。 たとえば、該当のパーミッションのファイルのパーミッションの一括変更は次のように行える。 $ find . -perm 640 | xargs chmod 644 標準出力を引数の任意の位置に渡したい場合は、次のようにする。
$ find . -perm 640 | xargs -I {} ls {} -l
"{}" の位置に標準出力が渡される。 文字列の置換カレント以下のファイルの文字列を置換する。 grep -rlI xxx . | xargs sed -i -e "s/xxx/yyy/g" -lI (小文字の L と大文字の I) は、小文字の L はファイル名の出力指定、I はバイナリを無視する指定。 文字コードの変換ファイルの文字コードを変換するには次のようにする。 $ nkf -w -Lu --overwrite *.txt
文字コードを推測させるには次のようにする。 $ nkf --guess 図のサイズの変更図のサイズを変更するには、つぎのようにする。 $ convert -resize 640x480 fig.png fig2.png 図の回転図を回転するには、つぎのようにする。 $ convert -rotate -90 fig.png fig2.png 図の切り取りたとえば、(0, 0) の位置からサイズ 640x480 で画像を切り取るには、つぎのようにする。 $ convert file.jpg -crop 640x480+0+0 file2.jpg PDF ファイルを画像に変換する$ pdfimages -png file.pdf fig EPS ファイルを画像に変換する$ gs -dSAFER -dEPSCrop -r600 -sDEVICE=pngalpha -o fig.png fig.eps ファイルを連番で名前付けする特にコマンドはないので、スクリプトで処理する。例えば、org ディレクトリに入っている *.jpg ファイルをカレントにコピー処理する。
#!/bin/sh
I=0
for FILE in org/*.jpg ; do
echo $FILE $I
cp $FILE image`printf %04d $I`.jpg
I=`expr $I + 1`
done
画像から動画を作るffmpeg で画像から動画を作るには、つぎのようにする。 $ ffmpeg -i "fig%04d.jpg" -r 30 anime.mpeg 再生速度を遅くするには次のようにする。 $ ffmpeg -i "fig%04d.jpg" -r 30 -vf "setpts=2.0*PTS" anime.mpeg ビットレートを指定するには次のようにする。 $ ffmpeg -i "fig%04d.jpg" -r 30 -b:v 1200k anime.mpeg 動画から画像を取り出すffmpeg で動画から画像を取り出すには、つぎのようにする。 $ ffmpeg -i movie.mpeg -ss 3 -t 4 -r 30 image%04d.jpg -ss は始点 (秒)、-t は終点 (秒)、-r は 1 秒間あたりの枚数である。 動画タイプの変換ffmpeg で MPEG2 から MPEG4 に変換するには、つぎのようにする。 $ ffmpeg -i movie.mpeg movie.mp4 Linux の強制終了Linux の強制終了や再起動には、SysRq (Alt+PrintScreen) キー (MagicSysRq キー) を使う。
キーにはそれぞれ意味がある。 参考: UbuntuTips/Others/MagicSysRq (Ubuntu Japanese Team Wiki) ファイルの分割たとえば 1 GB でファイルを分割するには、つぎのようにする。 $ split -b 1024m file.zip Linux での結合 $ cat xaa xab > file.zip Windows での結合 >copy /b xaa + xab file.zip rsync によるディレクトリの同期ディレクトリ dest をディレクトリ src に同期させるには次のようにする。 $ rsync -auvz --delete src/ dest "src" の後の "/" は重要。 オプション
アンマウントできないときデバイスを umount でアンマウントできないとき、fuser で使用ユーザーを調べることができる。 $ fuser -vm /mnt/work いろんなマシンからあちこちマウントし合っていてややこしいときは、"-l" オプションでうまくアンマウントしてくれる。 $ umount -l /mnt/work ハードディスクの削除注意: 以下を実行するとデータが完全に消えます。気をつけて実施すること。責任は負いません。 PC を処分するときに、残っているデータを消しておきたいときは、つぎのようにする。 # shred -n 2 -z -v /dev/sda "/dev/sda" のところにはデータを消去したいハードディスクのデバイスファイルを指定する。上記オプションでは乱数を 2 回書き込んで 0 クリアする。結構時間がかかるので、簡易的には -n 1 でよいかもしれない。 ただ 0 で埋めるだけで済ますなら、つぎのように実行すればよい。 # dd if=/dev/zero of=/dev/sda "bs=32m" なども指定した方が時間が短縮できるかもしれない (最適なサイズは環境による)。 SSD の場合は /dev/nvme0n1 などになる。 samba でマウントしたものなど、デバイス自体を指定できない場合は、一旦ファイルで埋めて、そのファイルを shred すればよい。 # dd if=/dev/zero of=zero bs=32m # shred -u zero 使用メモリ量の確認全体の使用メモリ量は、free で確認できるが、各プロセスの使用メモリ量の確認は、以下のようにする。まず、ps コマンドを用いる。 $ ps aux その中の VSZ、RSS の数値がメモリ量である。VSZ は仮想メモリサイズ、RSS は物理メモリサイズで、VSZ はとりあえず確保されたもの、RSS は実際に使われているもののようである。RSS 分が free の used に乗ってくるようである。 もう少し細かいデータは、/proc/(プロセスID)/status の Vm* を見るとわかる。 $ cat /proc/1819/status | grep Vm VmPeak: 597104 kB VmSize: 458640 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 251088 kB VmRSS: 104364 kB VmData: 347624 kB VmStk: 132 kB VmExe: 12372 kB VmLib: 26908 kB VmPTE: 536 kB VmSwap: 9396 kB ネットワークの疎通確認IP アドレス 192.168.1.1 のポート 80 に接続できるかどうか確認するには、次のようにする。 $ nc -zv 192.168.1.1 80 時刻の同期NTP サーバーリストの表示。 $ chronyc sources 同期が取れているか確認。 $ chronyc tracking "Leap status" が "Not synchronised" だったら、同期が取れていない。 NTP サーバーの追加。 $ sudo chronyc ... chronyc> add server xxx.xxx.xxx.xxx 200 OK chronyc> quit しばらく待つ。 再度 chronyc tracking して、"Leap status" が "Normal" になれば OK。 | |
| PENGUINITIS | |