スペースを「-」に置き換えて、現在のディレクトリにあるすべてのファイルのすべての文字を小文字にするスクリプトを作成しようとしています。
for x in 'ls'
do
if [ ! -f $x ]; then
continue
fi
lc = `echo $x | tr '[A-Z]' '[a-z]'`
if [ $lc != $x ]; then
mv $x $lc
fi
done
find -name "* *" -type f | rename 's/ /-/g'
次の出力が表示されます。 call: rename from to files...
ただし、名前は変更されません。たとえば、次のようになります。252680610243-Analyzed Sample2 2Jul12.txt
を使用して権限を変更しましたが、chmod 706
問題が発生しますか?私がここで何を見逃しているのでしょうか?
出力は次のとおりですbash -x lower.sh
。
+ for x in ''\''ls'\'''
+ '[' '!' -f ls ']'
+ continue
+ find -name '* *' -type f
+ rename 's/ /-/g'
call: rename from to files...
ベストアンサー1
Debianとその派生製品(Ubuntuを含む)では、簡単な呼び出しで簡単に達成できます。rename
:
$ touch 'A B'
$ rename 'tr/ A-Z/-a-z/' -- *
$ ls
a-b
しかし、あなたrename
は一つです同じ名前の別のユーティリティ。