スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Linux】ディレクトリ内のファイル名の特定の文字を全て置換する

はじめに


Linux(もしくはMacでも大丈夫)でファイルを扱っているとき
「このディレクトリ(またはフォルダ)に入ってる全てのファイル名のアンダースコア(_)を全てハイフン(-)にしたい」
といった、ファイル名に含まれるある文字を別の文字に変更したい時がたまにあると思います。
1つや2つであれば個別にやればいいのですが、ファイルが大量にある場合ひとつひとつ手作業でやるのは効率が悪いですよね。

こうやってみる


もちろんいくつかやり方はあると思いますが、例えば以下のようなファイルがあった場合に全てのファイルのアンダースコアをハイフンに変更してみます。



基本的にはfileコマンドでファイル名を出力して、trコマンドで置き換えて、mvするという流れになります。



こうすると



となります。今回はもう一つのやり方をご紹介します。
上記の方法よりもより柔軟な文字列変更が可能になります。



さらに、例えばtxtという拡張子を全てcsvに変えたいという場合も



さいごに


もともとは後者のsedでやる方法を多用していたのですが、trコマンドでもできないかと試してみました。
とりあえずtrコマンドが便利ということに気づかせてもらえましたが、上記のsedでやる例のようにtxtという文字列をcsvに変更するなどができません。trはあくまで文字や抽象的な集合(大文字、小文字、数字)を扱うものであって文字列を変換するものではないという認識を持って置いたほうが良いのかもしれません。

trについては他にもいろいろ使い道はあるようなのでファイルに関する何かを扱うときのために頭の片隅に置いておきたいと思います。

trコマンドについては以下が結構参考になります。
tr コマンド
スポンサーサイト
テーマ : UNIX/Linux
ジャンル : コンピュータ

Tag:Linux  Trackback:0 comment:0 

【Linux】今いるディレクトリ以下のディレクトリは消さないでファイルだけをすべて消す方法

かなり久々の更新です。とりあえず小さなことでもいいからアウトプットしていくことにします。

今いるディレクトリ以下のファイルをディレクトリだけを残して全て消す方法です。
以下のような状況の時を考えてみます。


$ find ./ -type f
./
.//hoge1
.//hoge2
.//hoge2dir
.//hoge2dir/hoge1
.//hoge2dir/hoge2


hoge2dirという名前のディレクトリだけを残して後のファイル(hoge1,hoge2)は全て消したい
という場合以下のコマンドを叩くと、全てキレイに消すことができます。


$ find ./ -type f -exec rm {} \;


ちょっとググって探したのでメモとして残しておきます。

Tag:Linux  Trackback:0 comment:0 

【Linux】awkコマンドで一番最後の要素を表示する方法

ファイルやなどの一行一行をある文字で区切って出力するときにawkコマンドを使ったりします。

今回は,で区切られた行でできたファイルhoge.csvで実験してみます。

hoge,hoge2,hoge3
hoge,hoge2,hoge3
hoge,hoge2,hoge3
...
...

内容はこんな感じとします。

1. 一つ目の要素を取得する


まずは,で区切られた各行の一つ目の要素だけを抽出してみます。



結果は

hoge
hoge
hoge
...

こんな感じですね。

また、この1の部分に取得したい番号を設定すればその部分だけを抽出できます。

2. 最後を取得する


次に行の最後の要素を取得方法です。



hoge3
hoge3
hoge3
...

こんな感じです。この例ですともちろん3を指定しても同じ結果が得られます。

ちなみにNFは最後を意味するのではなく各行の要素の個数を表しています。

3. ちょっとだけ応用


例えば1番目と3番目だけを使ってもう一つ別のcsvファイルを作成したいなんてことがあるかもしれません。

そんな時は



こんなふうにすれば新しくhoge.csvの各行の1番目と3番目をつかってhoge2.csvを作ることができます。

サクッとやりたい時におすすめです。

awkには他にもいろいろなことができる機能があるので活用して行かなければと思います。
テーマ : UNIX/Linux
ジャンル : コンピュータ

Tag:Linux  Trackback:0 comment:0 

【Linux】zsh-5.0.0をインストールしてみる

こんばんは

先日zsh-5.0.0がリリースされたので早速インストールしてみました。


wget http://sourceforge.net/projects/zsh/files/zsh/5.0.0/zsh-5.0.0.tar.gz/download

tar xvfz zsh-5.0.0.tar.gz
cd zsh-5.0.0
./configure
make
su
make install

which zsh
/usr/local/bin/zsh

/usr/local/bin/zsh --version
zsh 5.0.0 (x86_64-unknown-linux-gnu)


ここまででzshのインストールは終了。ちゃんと5.0.0が入っています。
ここからシェルの変更をしてみます。


chsh
Changing shell for murata.
パスワード:
New shell [/bin/zsh]: /usr/local/bin/zsh
chsh: "/usr/local/bin/zsh" is not listed in /etc/shells.
chsh: use -l option to see list


どうやら/etc/shellsに記述されていないシェルは設定することができないというエラーがでます。
/etc/shellsに今回いれたzshを記述してみます。


su

vim /etc/shells

一旦ログアウト
exit

再度サーバにログインして

echo $SHELL
/usr/local/bin/zsh


無事今回インストールしたzshに設定されていますね。
今回のアップデートで

マルチバイト文字列のサポート
コマンドラインのハイライト、色付けのサポート
non-interactie shell と subshell でジョブコントロールをサポート
POSIX 準拠の強化

このあたりが変更になっているようです。
マルチバイト文字列のサポートということで

echo "あああ"

こんなことができるようになりましたね。
ほかの変更点についても随時ためしてみます。
テーマ : UNIX/Linux
ジャンル : コンピュータ

Tag:Linux  Trackback:0 comment:0 

【Linux】dfコマンドとduコマンドの結果の違いに困ったら

久々のエントリーです。今日はサーバ運用ではまったdfとduの違いに困ったときの対処法です。

dfでディスクの容量を確認することがあるかもしれませんが、dfの結果90%使用しているという結果を得て、duコマンドでどこのディレクトリが容量食ってるんだ?

というような流れで調査をすることが多いと思います。僕はこんな感じでいつもディスクの占有している場所を調べています。

ところがduで色々調べてもどう見てもdfの結果とduの結果が違うときがあります。
詳しい違いはここでは書きませんが、そんな状況に出会ったときに以下のことをして解決しました。


ls -al /proc/*/fd/* | grep deleted


この結果何がわかるかというとdfコマンドでは認識しているけど実際には消されているファイルがわかります。

プロセスがまだ使っているのに強引に消された(移動された)ファイルがこれに該当します。

上記コマンドでファイルとプロセスIDが割り出せるのでその消されたファイルを使っているプロセスを再起動してあげるなりkillしてあげることで、この架空のファイルの存在も消えdfコマンドの結果に正しく反映されます。

以上メモでした。
テーマ : UNIX/Linux
ジャンル : コンピュータ

Tag:Linux  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。