Re: 遍历目录的脚本老写不好,急躁。。
发表于 : 2010-07-11 11:36
那你用find好了
find ~ ! -type d -exec ls '{}' \;
find ~ ! -type d -exec ls '{}' \;
不是说代码啦,是输出,所有文件夹和文件都直接列出来了,分不清层次ルルティア 写了:不是蛮有层次的嘛,不会是你浏览器坏了吧![]()
你那个很奇怪啊,是不是我的解释器和你的不一样。。
这个貌似很有效啊,不过要处理那些结果也很麻烦,我就是想自己进目录去。。不要别的命令进。。JiangHui 写了:那你用find好了
find ~ ! -type d -exec ls '{}' \;
man findルルティア 写了:这个貌似很有效啊,不过要处理那些结果也很麻烦,我就是想自己进目录去。。不要别的命令进。。JiangHui 写了:那你用find好了
find ~ ! -type d -exec ls '{}' \;
不过,这个啥意思啊,找到(find)类型(type)不是(!)目录(d)的,执行ls??后面'{}' \;干啥的啊?
代码: 全选
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 ~
>>
代码: 全选
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` \; \;
这个手动一个一个生成很慢啊,还是得遍历。。JiangHui 写了:slocate *.flac >> ~/playlist.m3u
代码: 全选
#!/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
代码: 全选
#!/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