cygwinで良くあることです。
a). まずホームディレクトリに移動します。
~ を押しましょう。
b). 仮想ディレクトリですべてのファイルを表示させます。
Shift + F を押しましょう。コマンドラインの画面になるので、そのコマンドを実行します。
ファイル数によってはかなり時間がかかりますが、すべてのファイルがフォルダ内に表示されるはずです。
c). パーミッションでソートする
s を押してからpを押しましょう。パーミッションが重いファイルが末尾に表示されるはずです。
ついでにShift + v --> p でパーミッションも表示させましょう。パーミッションを表示する場合、端末画面は広いほうがいいです。
d). 実行権が立っているファイルをマークしましょう
実行権が立っているファイルを範囲マークでマークします。マークしたいファイルの先頭で[を押してください。
次にマークしたいファイルの末尾で]を押してください。範囲に入っているファイルがマークされるはずです。
e). コマンド画面に移動します。
ENTERを押せばコマンドラインに移行して
> $$(mfiler4::markfiles)と表示されます。
> ls $$(mfiler4:markfiles) | egrep -v '.git|.exe|configure|.dll' | p | each ( chmod 644 $(|chomp ) )
と僕は入力しました。実行権をそのままにしておきたいファイルは、egrep -v ではじいてます。
(cygwinだったのでexeファイルとdllファイルとconfigureはそのままにしておく)
pコマンドで出力されるファイルを確認します。
each ( chmod 644 $(|chomp) ) で出力の毎行ごとにchmod 644を実行します。
g). 出力されるファイルをpコマンドで確認してください。
出力されるファイルに問題がなければENTERを、もし問題があればCTRL-Cかqを押してください。
CTRL-Cかqを押してエラーを起こさせるとファイラ画面に戻りますが、ファイラ画面では選択したファイルのマークはまだマークされ続けているため
実行権を変えたくないファイルを目で選んでスペースキー(マークの反転)を押してマークを外すか
コマンドラインのegrep -vで実行権を変えたくないファイルの名前ではじくかしてchmodの対象とするファイルから外してください。
h) もう一度pの画面で確認する
問題なければENTERを押してください。chmodが実行されるはずです。
bash + find -exec + chmodでも同じようなことはできますが、mfiler4の場合は目で確認ができるので安心です。
1の方法は非効率でした。ファイル数が多すぎると何時間もまたされるかもしれません。もう少し効率的な方法。 今度はファイラ画面でできるだけ完結させます。
a). まずホームディレクトリに移動します。
~ を押しましょう。
b). 仮想ディレクトリですべてのファイルを表示させます。
Shift + F を押しましょう。コマンドラインの画面になるので、そのコマンドを実行します。
ファイル数によってはかなり時間がかかりますが、すべてのファイルがフォルダ内に表示されるはずです。
c). パーミッションでソートする
s を押してからpを押しましょう。パーミッションが重いファイルが末尾に表示されるはずです。
ついでにShift + v --> p でパーミッションも表示させましょう。パーミッションを表示する場合、端末画面は広いほうがいいです。
d). 実行権が立っているファイルをマークしましょう
実行権が立っているファイルを範囲マークでマークします。マークしたいファイルの先頭で[を押してください。
次にマークしたいファイルの末尾で]を押してください。範囲に入っているファイルがマークされるはずです。
e). 実行権は立たせたままにしておきたいファイルを*のグロブマークか+の正規表現マークで反転させます。
+を押してコマンドラインで
mfiler4::regex_mark '.exe$'
とexeファイルのマークを反転させましょう 同じく、dll, configureを正規表現でマッチさせマークを反転させます。
f). ファイル名が画面に収まりきれない場合はファイル名のみの表示でchmodするファイルを確認する。
V + nで名前のみの表示モードになります。もう一度V + n すると表示が戻ります。
目で見てマークを外したいファイルはスペースキーでマークを反転させましょう。
ファイラ画面でよくマークされたファイルを確認しておきましょう。
マークを外したいファイルの名前に規則がある場合はもう一度上の正規表現マークやグロブマークを使ってマークを外します。
f). コマンドを入力しましょう。
確認が終わったら実行しましょう。ENTERを押せばコマンドラインの画面になるので
> chmod 644 $$(mfiler4:markfiles)と入力しましょう。 今度のやり方だとchmodが一回だけの実行なので大量のファイルがあっても早く終わるはずです。
各ディレクトリごとに初期化スクリプトを書きたい場合 以下のスクリプトを~/.mfiler4/mfiler4.xyzshに書いておきます。
def reread -inherit -option-with-argument d ( inherit $$-(OPTIONS|uniq) $$(ARGV) if(print .init_dir | -e) ( load .init_dir ) ) def mcd -inherit -option-with-argument d ( inherit $$-(OPTIONS|uniq) $$(ARGV) if(print .init_dir | -e) ( load .init_dir ) ) def new_dir -inherit -option-with-argument m,dotdir ( inherit $$(ARGV) $$-(OPTIONS|uniq) if(print .init_dir | -e) ( load .init_dir ) )
それで、各ディレクトリでvim .init_dirして初期化スクリプトを書きます。 例えば
sys::find . | scan '^./([^.].*)' | vd reread -d allとしておけば、そのディレクトリ以下のファイルが全て表示されます。 (ドットファイルは除く)
mfiler4 (1.3.1) | 2013-12-29 22:37 |