linux遍历目录命令 linux shell遍历目录

linux shell 命令怎么遍历目录

先设定实验环境:

成都创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为双塔企业提供专业的网站设计制作、网站制作,双塔网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

# 造 5 个 目录,每个目录下,造 3 个 文件和两个子目录如下:

cd $HOME/tmp

for i in d1 d2 d3 d4 d5

do

mkdir -p $i

touch $i/1.txt $i/2.txt $i/3.txt

mkdir -p $i/tmp1 $i/tmp2

done

# 检验测试环境:

$ ls -lR d1

total 0

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 2.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 3.txt

drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp1/

drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp2/

# 利用下列脚本来实现你要做的:

cd $HOME/tmp

for i in */1.txt

do

echo "Found $i, save $i and remove everything else under $(dirname $i)/"

save_this_file=$(basename $i)

curr_dir=$(dirname $i)

# 把这个1.txt暂时存到/tmp里面去,为了避免已经有同样的档案名称在/tmp,加上$$ (i.e. PID)

mv $i /tmp/${save_this_file}.$$

rm -rf $curr_dir

mkdir -p $curr_dir

mv /tmp/${save_this_file}.$$ $curr_dir

done

# 屏幕执行输出如下:

Found d1/1.txt, save d1/1.txt and remove everything else under d1/

Found d2/1.txt, save d2/1.txt and remove everything else under d2/

Found d3/1.txt, save d3/1.txt and remove everything else under d3/

Found d4/1.txt, save d4/1.txt and remove everything else under d4/

Found d5/1.txt, save d5/1.txt and remove everything else under d5/

# 复验实验环境:

$ ls -l d?/*

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d1/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d2/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d3/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d4/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d5/1.txt

OK?

thanks!

怎么使用java编程实现linux下所有文件目录的遍历

为了避免目录列举消耗时间过长,请指定一个目录来模拟,命令行参数:代表路径的字符串.

如果认可代码,请加分50,谢谢

----

import javax.swing.*;

import javax.swing.tree.*;

import java.awt.*;

import java.io.*;

final public class FileTree extends JFrame {

public FileTree(File dir) throws HeadlessException {

super("File Tree");

JTree tree;

add(new JScrollPane(tree =new JTree(buildTreeModel(dir))));

tree.setCellRenderer(new FileTreeRenderer());

setSize(400,600);

setVisible(true);

}

private TreeModel buildTreeModel(File dir){

DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);

walkthrough(dir,root);

return new DefaultTreeModel(root);

}

private static void walkthrough(File f,DefaultMutableTreeNode node){

for (File fle : f.listFiles()) {

DefaultMutableTreeNode n = new DefaultMutableTreeNode(fle);

node.add(n);

if (fle.isDirectory()){

walkthrough(fle, n);

}

}

}

private class FileTreeRenderer extends DefaultTreeCellRenderer {

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {

JLabel cmp = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

if (value instanceof DefaultMutableTreeNode) {

DefaultMutableTreeNode n = (DefaultMutableTreeNode)value;

Object obj = n.getUserObject();

if (obj instanceof File) {

File f = (File)obj;

cmp.setText(f.getName());

cmp.setForeground(f.isDirectory()?Color.BLUE:Color.BLACK);

}

}

return cmp;

}

}

public static void main(String[] args) {

new FileTree(new File(args[0]));

}

}

Linux Shell:Shell循环语句

摘要: Linux , Shell

Shell中常用循环有 for , while

for循环只能用于 固定次数 的循环,因此不能无限循环和用于一些在后台守护进程一直运行的程序,语法语句如下

也可以写成一行,用 ; 分隔

取值列表内元素以空格隔开,如果元素带有空格则用引号包裹起来,例子如下

输出如下,可见循环到最后退出循环,引用变量依旧是最后一个取值列表元素

一行的写法

Shell的for循环也可以采用C语言的写法,注意是 双括号 ,用 分号; 间隔

一个简单例子

while循环语句结合条件测试使用,语法如下

举一个例子

在循环中使用条件测试实现复杂的逻辑,例如

也可以使用,||一行完成,省去if,fi

Shell的continue,break语句和Python一样,例子如下

break语句下输出4

continue语句下输出4 6 7 8 9 10

常见结合使用的循环体有 序列 , 数组 , 命令行传参 , 文件目录和文件

序列通过 seq 命令或者 {begin..end..step} 符号进行定义:

结合for循环使用案例

在Shell中使用小括号 () 定义数组,数组遍历使用 [@] 符号,防止元素有空格用双引号包起来,,例子如下

命令行传参遍历使用固定符号 $@ ,如果参数中有空格,用双引号括起来,例子如下

文件遍历使用 ls 命令,可以指定目录,以及通配符匹配

一个双重循环实现,注意 expr表达式中乘号要加转移符

(2)将某目录下大小大于阈值的文件移动到另一个文件

遍历循环一个目录,使用awk语法获得文件大小,将100m以上的文件移动到另一个文件夹

(2)指定开始日期和结束日期完成一个跑批任务

指定一个开始时间和结束时间,while从开始日期一直自增到结束日期循环结束,通过 date -d '2021-01-01 1day' +%Y-%m-%d 自增一天

linux shell中的遍历目录并删除目录下与目录名相同的文件

先设定实验环境:

#

5

目录,每个目录下,造

3

文件和两个子目录如下:

cd

$home/tmp

for

i

in

d1

d2

d3

d4

d5

do

mkdir

-p

$i

touch

$i/1.txt

$i/2.txt

$i/3.txt

mkdir

-p

$i/tmp1

$i/tmp2

done

#

检验测试环境:

$

ls

-lr

d1

total

-rw-r--r--

1

wenlee

comm

dec

22

10:35

1.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

2.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

3.txt

drwxr-sr-x

2

wenlee

comm

256

dec

22

10:35

tmp1/

drwxr-sr-x

2

wenlee

comm

256

dec

22

10:35

tmp2/

#

利用下列脚本来实现你要做的:

cd

$home/tmp

for

i

in

*/1.txt

do

echo

"found

$i,

save

$i

and

remove

everything

else

under

$(dirname

$i)/"

save_this_file=$(basename

$i)

curr_dir=$(dirname

$i)

#

把这个1.txt暂时存到/tmp里面去,为了避免已经有同样的档案名称在/tmp,加上$$

(i.e.

pid)

mv

$i

/tmp/${save_this_file}.$$

rm

-rf

$curr_dir

mkdir

-p

$curr_dir

mv

/tmp/${save_this_file}.$$

$curr_dir

done

#

屏幕执行输出如下:

found

d1/1.txt,

save

d1/1.txt

and

remove

everything

else

under

d1/

found

d2/1.txt,

save

d2/1.txt

and

remove

everything

else

under

d2/

found

d3/1.txt,

save

d3/1.txt

and

remove

everything

else

under

d3/

found

d4/1.txt,

save

d4/1.txt

and

remove

everything

else

under

d4/

found

d5/1.txt,

save

d5/1.txt

and

remove

everything

else

under

d5/

#

复验实验环境:

$

ls

-l

d?/*

-rw-r--r--

1

wenlee

comm

dec

22

10:35

d1/1.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

d2/1.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

d3/1.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

d4/1.txt

-rw-r--r--

1

wenlee

comm

dec

22

10:35

d5/1.txt

ok?

thanks!

网页题目:linux遍历目录命令 linux shell遍历目录
标题URL:https://www.cdcxhl.com/article4/hhgpoe.html

成都网站建设公司_创新互联,为您提供品牌网站制作手机网站建设自适应网站网站建设静态网站关键词优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设