スペースを含むディレクトリやファイルを cp コマンドでコピー
- bash の for ループだとスペースを含むファイルリスト、例えば「Ahmad Jamal」であれば、「Ahmad」と「Jamal」に分かれてしまって上手く行かない。
- for ループの例、for i in `cat list` ;do echo $i;done
- そこで、ls コマンドで取得したファイルリストを、下記のような while read を使ったシェルスクリプトに読み込ませ、バッチシェルを出力する。
1. まず、ファイル名のリストを作成
$ ls /media/disk-1/MyMusic/Music > copy-from-list
2. バッチ作成のためのシェルスクリプトを作成(ファイル名を batch-create.sh と
$ vi batch-create.sh
=================================
while read LINE; do
echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/
done
=================================
3. ファイルリストを読み込ませてバッチを作成する。
$ sh batch-create.sh < copy-from-list > copy-batch.sh
4. バッチを実行する。
$ sh copy-batch.sh
- タイムスタンプを加えたスクリプトの例
while read LINE; do
echo echo \`date\` copy \"/media/disk-1/MyMusic/Music/$LINE\"
echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/
echo date
done
コメント
コメントを投稿