Thread View: fj.lang.perl
6 messages
6 total messages
Started by Kazuhiko Nanmei
Thu, 02 Apr 1998 00:00
mkdirの -p オプション相当を実現するには?
Author: Kazuhiko Nanmei
Date: Thu, 02 Apr 1998 00:00
Date: Thu, 02 Apr 1998 00:00
33 lines
1552 bytes
1552 bytes
こんにちわ なんめい@東芝と申します。 mkdirの-pオプション相当を実現したいのですが、どんなふうに 書けば良いんでしょうか? どなたか、ご教授ください。m(__)m やりたい事は・・・ カレントディレクトリに、「a」というディレクトリが無い状態で mkdir -p a/b/c/d とやった場合、カレントディレクトリに、a、その下に、b、その下に、c、・・・ という風に、勝手に足りないディレクトリを作ってくれますよね。 それを、 mdkir a/b/c/d とやると、当然のように・・・ mkdir: ディレクトリ "a/b/c/d" を作成できません: ファイルまたはディレクトリがあ りません。 とエラーになります。 でも、どうにかして「-p」オプションを使わないで、 同じような事をやりたいのです。 実際使うコマンドは、mkdirでは無く、他の外部コマンドなんですが・・・ また、そのコマンドが、-pの様なオプションを実装してくれていなんで 困ったしだいです。 宜しくお願いします。
Re: mkdir$B$N(B -p $B%*%W%7%g%sAjEv$r<B8=$9$k$K$O!)(B
Author: IRIUCHIJIMA Ken / 入内島 健
Date: Thu, 02 Apr 1998 00:00
Date: Thu, 02 Apr 1998 00:00
27 lines
1469 bytes
1469 bytes
>>>>> kazuhiko.nammei@toshiba.co.jp (Kazuhiko Nanmei) (="nammei") さん
>>>>> 2 Apr 1998 10:09:48 GMT に言われるには:
nammei> mkdirの-pオプション相当を実現したいのですが、どんなふうに
nammei> 書けば良いんでしょうか?
...
nammei> mkdir -p a/b/c/d
ばらして、上から順番にあるかどうか試しながら作っていけばよいですね。
区切りが '/' なので若干面倒ですが考え方だけ書くと、$_ に a/b/c/d が入っ
ているとして
@d = split m'/';
for (@d) {
mkdir $_
unless -d $_;
chdir $_;
}
みたいなことをやれば、できるでしょう。
# このまま全く加筆なしに動くとは思わないで下さいね。
--
東芝 入内島 健 横浜市鶴見区在住
mailto: ken.iriuchijima@toshiba.co.jp, junkto: ken@gaea.ssel.toshiba.co.jp
Re: mkdir$B$N(B -p$B%*%W%7%g%sAjEv$r<B8=$9$k$K$O!)(B
Author: m-azuma
Date: Thu, 02 Apr 1998 00:00
Date: Thu, 02 Apr 1998 00:00
16 lines
942 bytes
942 bytes
$BEl$G$9!#(B <6fvo5c$jd9@ux37.fuchu.toshiba.co.jp>$B$N5-;v$K$*$$$F(B kazuhiko.nammei@toshiba.co.jp$B$5$s$O=q$-$^$7$?!#(B > mkdir$B$N(B-p$B%*%W%7%g%sAjEv$r<B8=$7$?$$$N$G$9$,!"$I$s$J$U$&$K(B > $B=q$1$PNI$$$s$G$7$g$&$+!)(B "`"$B$r;H$C$F%7%'%k$G<B9T$9$l$P$h$$$o$1$G$9$+$i!"(B `mkdir -p a/b/c/d`; $B$G$I$&$G$7$g$&!#(B -- $BEl(B $B@55-(B <m-azuma@mxa.meshnet.or.jp>
Re: mkdir の -p オプション相当を実現するには?
Author: Hideki OHTA
Date: Thu, 02 Apr 1998 00:00
Date: Thu, 02 Apr 1998 00:00
30 lines
1893 bytes
1893 bytes
太田@名古屋大学です。
fj.lang.perl の "mkdirの -pオプション相当を実現するには?" の記事
<6fvo5c$jd9@ux37.fuchu.toshiba.co.jp>において
1998年04月02日(木曜日) 19時09分48 秒頃、Kazuhiko Nanmeiさん
(kazuhiko.nammei@toshiba.co.jp) は書きました。
>> こんにちわ
>> なんめい@東芝と申します。
>>
>> mkdirの-pオプション相当を実現したいのですが、どんなふうに
>> 書けば良いんでしょうか?
perl5 であれば、(perl -v で確認できる) File::Path モジュールが使えます。
use File::Path;
mkpath 'a/b/c/d';
mkpath ['hoge/hoge', 'foo/bar'];
また、File::Path モジュールには、あるディレクトリ以下の前ファイルを消す
rmtree 関数も提供されています。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
太田 秀樹 (名古屋大学 工学部 電気電子・情報工学科 4年)
情報処理教育センター アシスタントスタッフ
e-mail:hohta@eds.ecip.nagoya-u.ac.jp,
h_ohta@echo.nuee.nagoya-u.ac.jp
WWW homepage http://www.eds.ecip.nagoya-u.ac.jp/~hohta/
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Re: mkdir$B$N(B -p $B%*%W%7%g%sAjEv$r<B8=$9$k$K$O!)(B
Author: Inaba Hiroto
Date: Fri, 03 Apr 1998 00:00
Date: Fri, 03 Apr 1998 00:00
46 lines
1979 bytes
1979 bytes
In article <38vhss3235.fsf@gaea.ssel.toshiba.co.jp> ken@gaea.ssel.toshiba.co.jp (IRIUCHIJIMA Ken / =?ISO-2022-JP?B?GyRCRn5GYkVnGyhCIBskQjdyGyhC?=) writes:
> >>>>> kazuhiko.nammei@toshiba.co.jp (Kazuhiko Nanmei) (="nammei") $B$5$s(B
> >>>>> 2 Apr 1998 10:09:48 GMT $B$K8@$o$l$k$K$O(B:
> nammei> mkdir$B$N(B-p$B%*%W%7%g%sAjEv$r<B8=$7$?$$$N$G$9$,!"$I$s$J$U$&$K(B
> nammei> $B=q$1$PNI$$$s$G$7$g$&$+!)(B
> $B$P$i$7$F!">e$+$i=gHV$K$"$k$+$I$&$+;n$7$J$,$i:n$C$F$$$1$P$h$$$G$9$M!#(B
> $B6h@Z$j$,(B '/' $B$J$N$G<c43LLE]$G$9$,9M$(J}$@$1=q$/$H!"(B$_ $B$K(B a/b/c/d $B$,F~$C(B
> $B$F$$$k$H$7$F(B
> @d = split m'/';
> for (@d) {
> mkdir $_
> unless -d $_;
> chdir $_;
> }
$B$3$N9M$(J}$G$$$$$H;W$$$^$9$,!"$A$g$C$H$@$1JL$N$d$j$+$?$r$7$F$_$^$7$?!#(B
#/usr/local/bin/perl -w
for (@ARGV) {
while (m:/|$:g) {
mkdir $`, 0777 or die "Can't mkdir $`: $!\n" if $` ne "" and !-d $`;
}
}
$B0l1~$3$N$^$^%9%/%j%W%H$K$7$F$bF0$/$h$&$K$7$?$D$b$j$G$9$,!"K\Ev$KLdBj$J$$(B
$B$H$OJ]>Z$7$^$;$s(B:->$B!#(B
In article <6g063d$475$1@meshsv66.os.mesh.ad.jp> m-azuma@mxa.meshnet.or.jp writes:
> "`"$B$r;H$C$F%7%'%k$G<B9T$9$l$P$h$$$o$1$G$9$+$i!"(B
> `mkdir -p a/b/c/d`;
$B$5$\$k$J$i!"$3$N9M$(J}$G$$$$$G$9$,!";H$&$N$O(B
system("mkdir -p a/b/c/d");
$B$NJ}$,$h$$$H;W$$$^$9!#(B
--
$B0pMU(B $B9@?M(B (inaba@st.rim.or.jp)
Re: mkdir$B$N(B -p $B%*%W%7%g%sAjEv$r<B8=$9$k$K$O!)(B
Author: IRIUCHIJIMA Ken / 入内島 健
Date: Mon, 06 Apr 1998 00:00
Date: Mon, 06 Apr 1998 00:00
35 lines
1980 bytes
1980 bytes
>>>>> inaba@st.rim.or.jp (Inaba Hiroto) (="稲") さん
>>>>> <yaxo1aai.fsf@carnival.st.rim.or.jp> で
>>>>> 3 Apr 1998 01:02:49 +0900 に言われるには:
nammei> mkdirの-pオプション相当を実現したいのですが、どんなふうに
nammei> 書けば良いんでしょうか?
...
> @d = split m'/';
> for (@d) {
> mkdir $_
> unless -d $_;
> chdir $_;
> }
稲> この考え方でいいと思いますが、ちょっとだけ別のやりかたをしてみました。
私のやり方は基本に忠実ではあったと思いますが、
稲> #/usr/local/bin/perl -w
稲> for (@ARGV) {
稲> while (m:/|$:g) {
稲> mkdir $`, 0777 or die "Can't mkdir $`: $!\n" if $` ne "" and !-d $`;
稲> }
稲> }
また、目から鱗が落ちました。稲葉さんのコードを見ていると、自分にとって
はまだまだ perl が外国語なのを思い知ります。
m//g を list context で使えば split は使わずに済んでしまうんですね。し
かも、$` を使えばいちいち chdir する必要がない、と。
--
東芝 入内島 健 横浜市鶴見区在住
mailto: ken.iriuchijima@toshiba.co.jp, junkto: ken@gaea.ssel.toshiba.co.jp
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads