- PR -

シェルスクリプトでファイルリスト作成

1
投稿者投稿内容
ぼると
常連さん
会議室デビュー日: 2003/04/09
投稿数: 42
投稿日時: 2004-07-30 16:31
ディレクトリのファイルの一覧をテキストファイルに出力したいと思っています。

コード:
#!/bin/sh

declare -i index=0

for file in `ls -1`
do
    index=${index}+1
    echo ${index}:${file} >> files.lst
done


とすると、ファイル名に半角スペースを含んでいる場合、半角スペースで
区切られ2行に出力されてしまいます。

ファイル名に半角スペースを含んでいても1行に出力するにはどうすればいいでしょうか?

シェルはbash2.05bを使用しています。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-07-30 16:46
こんな感じでどうでしょう!

------------------------------------
#!/bin/bash

index=0

ls -1 | while read file; do
index=`expr $index + 1`
echo $index:$file >> $file.lst
done
------------------------------------
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2004-07-30 18:07
こんなんじゃだめなんですかね?

#!/bin/bash
ls -1 | nl -s ":" -n ln -w 1 > files.lst


ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-07-30 20:19
わりと蛇足。
ちょっと出力フォーマットが違ってしまいますが、
ls -1 | cat -b > files.lst
ではダメかしら?

さらに蛇足。
awk版を書いてみる。
ls -1 | awk '{print NR":"$0}' > files.lst
ぼると
常連さん
会議室デビュー日: 2003/04/09
投稿数: 42
投稿日時: 2004-07-30 22:06
皆さん、回答ありがとうございます。

知らなかったコマンドがいろいろあるので、manで調べてみたいと思います。
1

スキルアップ/キャリアアップ(JOB@IT)