「ぎょーむ日誌」目次に戻る | KuboWeb top に戻る | twilog | atom

ぎょーむ日誌 2000-04-(21-30)

苦情・お叱りは, たいへんお手数かけて恐縮ですが, 久保 (kubo@ees.hokudai.ac.jp) までお知らせください.

2000 年 04 月 21 日 (金)


2000 年 04 月 22 日 (土)


2000 年 04 月 23 日 (日)


2000 年 04 月 24 日 (月)


2000 年 04 月 25 日 (火)

	[ 問題 ]
	ディレクトリを再帰的にたどって、中にあるファイル名を
	全部小文字に変換していきたいのですが、どういう方法が
	賢いでしょうか?
	[ 回答 1 ]
	find . -type f -exec mv {} `echo {} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
	[ 回答 1 への補足 ]
	それは '[A-Z]' '[a-z]' などと書けばいいのでは。
	でもそれ以前の問題として、`` の展開のタイミングがまずいのでは。
	# \; も抜けてるし、きっと試さなかったに違いない。
	find は /bin/sh を呼び出さないから -exec /bin/sh -c 'mv {} `...`' \;
	とかするんですかね。
	あと、単独の word として現れた {} しか展開してくれない find も考慮する
	なら...
	[ 回答 2 ]
	find . -type f -print | perl -nle 's%.*/%%; $d = $&; ($f = $_) =~ tr/A-Z/a-z/; unlink($d . $f); rename($d . $_, $d . $f)'


2000 年 04 月 26 日 (水)

	それなら File:Find.pm も使って
		perl -MFile::Find -e '&find(sub { rename($_, lc) if -f; }, @ARGV);' .
	という one-liner はどうでしょう?ディレクトリ部分は面倒を
	見てもらえるので楽になります。
	他のバージョンとしては
		find . -type f -print | \
		perl -lne '($n = $_) =~ s|/[^/]+$|\L$&|; rename($_, $n);'
	とか、
		find . -type f -print | \
		while read NAME
		do
			D=`dirname  $NAME`
			F=`basename $NAME`
			(cd $D && mv $F `echo $F | tr '[A-Z]' '[a-z]'`)
		done
	なんかも…


2000 年 04 月 27 日 (木)


2000 年 04 月 28 日 (金)


2000 年 04 月 29 日 (土)

	=		# no_change
	?		# missing					
	I		# introduction
	L		# lost	
	LM	?	# lost,moved
	M		# moved	
	M	G	# moved,gnawed
	M	GL	# moved,gnawed,lair
	M	L	# moved,lair
	M	LP	# moved,lair,preyed
	M	P	# moved,preyed
	M	S	# moved,scattered
	T		# not_moved
	T	G	# not_moved,gnawed
	T	GL	# not_moved,gnawed,lair
	T	L	# not_moved,lair
	T	LP	# not_moved,lair,preyed
	T	P	# not_moved,preyed
	T	S	# not_moved,scattered


2000 年 04 月 30 日 (日)


KuboLog | KuboWeb