分页: 2 / 4

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 11:36
JiangHui
那你用find好了

find ~ ! -type d -exec ls '{}' \;

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 11:38
JiangHui
ルルティア 写了:不是蛮有层次的嘛,不会是你浏览器坏了吧 :em04
你那个很奇怪啊,是不是我的解释器和你的不一样。。 :em20
不是说代码啦,是输出,所有文件夹和文件都直接列出来了,分不清层次

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 12:05
ルルティア
JiangHui 写了:那你用find好了

find ~ ! -type d -exec ls '{}' \;
这个貌似很有效啊,不过要处理那些结果也很麻烦,我就是想自己进目录去。。不要别的命令进。。
不过,这个啥意思啊,找到(find)类型(type)不是(!)目录(d)的,执行ls??后面'{}' \;干啥的啊?

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 12:13
JiangHui
你具体想干什么啊?

跟你说的差不多,find很强大也很复杂

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 12:16
delectate
ルルティア 写了:
JiangHui 写了:那你用find好了

find ~ ! -type d -exec ls '{}' \;
这个貌似很有效啊,不过要处理那些结果也很麻烦,我就是想自己进目录去。。不要别的命令进。。
不过,这个啥意思啊,找到(find)类型(type)不是(!)目录(d)的,执行ls??后面'{}' \;干啥的啊?
man find

SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

加上sudo 配合rm特别爽

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 12:30
tusooa

代码: 全选

tlcr: 0 庚寅年五月三十日 12:05:30  ~
>> dog 应用/源码/printdir/main.c
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>

void printdir(char *dir, int depth)
{
        DIR *dp;
        struct dirent *entry;
        struct stat statbuf;

        if((dp = opendir(dir)) == NULL)
        {
                fprintf(stderr, "Error: Cannot open directory: %s\n", dir);
                return;
        }
        chdir(dir);
        while((entry = readdir(dp)) != NULL)
        {
                lstat(entry->d_name, &statbuf);
                if(S_ISDIR(statbuf.st_mode))
                {
                        if(strcmp(".", entry->d_name) == 0 ||
                                        strcmp("..", entry->d_name) == 0)
                                continue;

                        printf("%*s%s/\n", depth, "", entry->d_name);
                        printdir(entry->d_name, depth+4);
                }
                else printf("%*s%s\n", depth, "", entry->d_name);
        }
        chdir("..");
        closedir(dp);
}
int main(int argc, char *argv[])
{
        char *topdir = ".";
        if(argc >= 2)
                topdir = argv[1];

        printf("Directory scan of %s\n", topdir);
        printdir(topdir, 0);
        printf("\ndone\n");

        exit(0);
}

tlcr: 0 庚寅年五月三十日 12:26:08  ~
>> 
(抄书的)这个多好用阿。

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 12:42
JiangHui
:em04 用C多简单啊

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 13:32
ルルティア
我想写一个制作播放列表的脚本
播放列表以每个文件夹的名字命名,内容是
#EXTM3U
#EXTINF:0,With An Orchid.mp3
\Yanni\With An Orchid.mp3
写了一个,估计肯定运行不了,这个方法不好,我还是看看怎么遍历吧。。

代码: 全选

find $1 -type d -exec  find '{}' -maxdepth 0 -name '*.mp3' -o '*.wma' -o '*.flac' -execdir echo #EXTM3U'\n'#EXTINF:0,`ls '{}'`'\n'$(pwd)\`ls '{}'` >> `$(pwd).m3u` \; \;

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 13:33
ルルティア
这个程序我很多年前就写好了,当时是win下用VB写的,但是源码忘在姐的电脑里了,再也找不回来了。。 :em20

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 14:38
ルルティア
:em20 :em20 :em20 憔悴,不写了,nnd

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 14:49
JiangHui
slocate *.flac >> ~/playlist.m3u

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 15:43
ルルティア
JiangHui 写了:slocate *.flac >> ~/playlist.m3u
这个手动一个一个生成很慢啊,还是得遍历。。

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 15:57
delectate
纠结,真纠结

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 15:58
JiangHui

代码: 全选

#!/bin/sh

function pl()
{
	while read line
	do
		dir=`dirname "$line"`
		name=`basename "$dir"`
		echo $name
		echo "$line" >> ~/desktop/playlist/"$name".m3u
	done
}

slocate "*.flac" | pl

Re: 遍历目录的脚本老写不好,急躁。。

发表于 : 2010-07-11 16:00
trigger

代码: 全选

#!/bin/bash
#作用:进入当前目录下的所有递归子目录,说hi,再回到出发的目录,避免有空格文件名造成的for...in...错误
hi=`pwd`
du | awk '{ $1="";print $0 }' |
while read line
do
cd "$line" && echo "i am in "$line" now " && cd "$hi"
done 
前一阵子写的,自己改改do里面的吧