sh/bash/dash/ksh/zsh等Shell脚本
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#1
帖子
由 ルルティア » 2010-07-11 9:29
更新:
多谢大家帮助!脚本如下
代码: 全选
#!/bin/bash
IFS='
'
dirscan()
{
ls -1 "$1" | while read filename
do
if [ -d "$filename" ]; then
cd "$filename"
dirscan `pwd`
cd ..
else
path="${PWD//\//\\}"
path="${path//\\media\\MUSIC\ CARD/}"
listname=$(basename "`pwd`").M3U
pathnname="${savepath}/${listname}"
[ ! -e $pathnname ] && touch "${pathnname}"
extname=`echo "$filename" | awk -F. '{print $NF}'`
if [ "$extname" == "mp3" -o "$extname" == "wma" -o "$extname" == "ogg" -o "$extname" == "flac" ]; then
echo -E "#[UTF8FULLPATH]${path}\\${filename}" >> "$pathnname"
fi
fi
done
}
savepath="/media/MUSIC CARD/PLAYLISTS"
cd /media/MUSIC\ CARD/MUSIC
dirscan "/media/MUSIC CARD/MUSIC"
unset IFS
###########################################################
# 此脚本只用于制作适合魅族M3使用的播放列表
# 如作其他用途,请自行修改相关参数
# 播放列表样本如下:
# #[UTF8FULLPATH]\MUSIC\direct_name\your_music.flac
###########################################################
===========下面是帖子本来的旧内容,请无视之===========
代码: 全选
#!/bin/sh
dirscan()
{
for filename in "`ls $1`"; do
if [ -d $filename ]; then
cd $filename
dirscan $(pwd)/${filename}
cd ..
else
echo $filename
fi
done
}
cd $1
dirscan "$1"
=========
代码: 全选
~/ttttt$ sh ./test ./
[: 15: fh: unexpected operator
fh test test2 untitled folder untitled folder 2
上次由
ルルティア 在 2010-07-12 14:49,总共编辑 2 次。
everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
leeaman
- 帖子: 30702
- 注册时间: 2007-02-02 18:14
- 系统: debian sid
#2
帖子
由 leeaman » 2010-07-11 9:33
似乎错误蛮低级的~~~
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#3
帖子
由 ルルティア » 2010-07-11 9:36

啥错误啊。。折腾了好久了,早饭都没吃,饿死了
everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
leeaman
- 帖子: 30702
- 注册时间: 2007-02-02 18:14
- 系统: debian sid
#4
帖子
由 leeaman » 2010-07-11 9:37
我那知道...只是灌水而已...google现成的参考啊
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#5
帖子
由 ルルティア » 2010-07-11 9:43

都参考了十几个样本了。。
everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
JiangHui
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
#6
帖子
由 JiangHui » 2010-07-11 9:48
直接用tree不就完了吗
-
JiangHui
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
#7
帖子
由 JiangHui » 2010-07-11 9:59
代码: 全选
#!/bin/sh
dirscan()
{
for filename in *; do
if [ -d $filename ]; then
cd $filename
dirscan $(pwd)/${filename}
cd ..
else
echo $filename
fi
done
}
cd $1
dirscan "$1"
姐控要的是这种效果吗?层次都没有,真难看
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#8
帖子
由 ルルティア » 2010-07-11 10:45
你那边能运行不?还是出错
代码: 全选
~/ttttt$ sh ./test ./
[: 15: Plain: unexpected operator
Plain text document.txt
sdg.txt
test
test2
[: 15: untitled: unexpected operator
untitled folder
[: 15: untitled: unexpected operator
untitled folder 2
everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#9
帖子
由 ルルティア » 2010-07-11 10:47
我本来用的是 $1/* 遍历的。。但是遇到有空格的文件名就出错了
所以还是用"'ls'"

everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
JiangHui
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
#10
帖子
由 JiangHui » 2010-07-11 11:00

没测试过的代码我不会放上来的
不是给你改了吗?针对文件名空格的问题
代码: 全选
#!/bin/sh
dirscan()
{
for filename in *; do
if [ -d "$filename" ]; then
cd $filename
dirscan $(pwd)/${filename}
cd ..
else
echo $filename
fi
done
}
cd $1
dirscan "$1"
加个引号就是了
-
JiangHui
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
#11
帖子
由 JiangHui » 2010-07-11 11:03
我还是坚持6楼的,姐控的脚本就算成功了也没法看

-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#12
帖子
由 ルルティア » 2010-07-11 11:24

为什么没法看啊,我的和你的不就一个星号*的区别吧
你这个我还是出错,晕了。。。你找个有空格的文件夹试试啊,引号加在filename上面没用吧。。主要是那个*的问题,你试试echo ./*就知道了。。
刚刚IRC有人提示我看IFS什么的,正在研究中

everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
JiangHui
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
#13
帖子
由 JiangHui » 2010-07-11 11:32
你看我的输出结果第一条
a 11是带空格的吧
当然 $filename都要加引号,上面贴出来的我就加了第一个
没有层次感,输出来的东西没法看,我就给你改了下报错的地方,如果是我就直接重写一个了
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#14
帖子
由 ルルティア » 2010-07-11 11:33
tree的话,我还要去处理它的输出,更麻烦
我想自己一个一个文件夹进去处理文件的啊
everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。
-
ルルティア
- 帖子: 1077
- 注册时间: 2010-05-23 17:10
#15
帖子
由 ルルティア » 2010-07-11 11:35
不是蛮有层次的嘛,不会是你浏览器坏了吧
你那个很奇怪啊,是不是我的解释器和你的不一样。。

-
附件
-

everything is nada; nada is nothing
Otro Loco Más
我是Lavande的马甲,但是有时候,我觉得,我们不是同一个人。