linuxshell遍历文件夹|linux shell 命令怎么遍历目录

linuxshell遍历文件夹|linux shell 命令怎么遍历目录的第1张示图

A. linux的shell脚本中,如何通过until循环实现 当本目录下存在restart文件夹的时候进行循环呢

可以使用ls或者find来完成对某个文件夹下所有文件的遍历比如使用ls可以简单地使用一个通配符来完成ls 某个目录/*也可以使用find来完成比如find 某个目录自然的也可以写一个shell脚本来进行遍历首先进行一个要遍历的文件夹然后循环查看每个文件如果该文件是一个文件夹的话则进入该文件夹做和上面相同的事件这样就可以该整个文件夹内的所有文件进行遍历了一个简单的代码如下#!/bin/bash function show(){ cd $1 for i in `ls` do if [ -d "$i" ] then show "$i" else echo "$i" fi done cd ..}show $1exit 0该程序不能遍历以.开头的隐藏文件可以使用ls -a来进行遍历隐藏文件遍历时需要注意.和..这两个特殊文件下面是一个简单的代码#!/bin/bash function show(){ cd $1 for i in `ls -a` do if [ "$i" == "." ] || [ "$i" == ".." ] then continue; fi if [ -d "$i" ] then show "$i" else echo "$i" fi done cd ..}show $1exit 0

B. linux shell 命令怎么遍历目录

先设定实验环境:# 造 5 个 目录,每个目录下,造 3 个 文件和两个子目录如下:cd $HOME/tmpfor i in d1 d2 d3 d4 d5do mkdir -p $i touch $i/1.txt $i/2.txt $i/3.txt mkdir -p $i/tmp1 $i/tmp2done# 检验测试环境:$ ls -lR d1total 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.txtdrwxr-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/tmpfor i in */1.txtdo 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_dirdone# 屏幕执行输出如下: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.txtOK?thanks!

C. 如何在linux中使用shell脚本遍历指定目录的文件,将创建时间大于指定时间的文件,复制到指定目录下。

#!/bin/shDIR=$1TIME=$2OTDIR=$3TMP=`find$1-mtime+$2-print`echo$TMPcp$TMP$OTDIR执行时要有3个参数指定文件的目录大于指定的时间复制到的目录没写验内证部分参数顺序不要容写错

D. bash shell 在有很多嵌套的文件夹里面,怎么遍历全部文件夹来删除一个n级文件夹

#!/bin/bashfor i in [email protected]do find . -name $i | xargs rm -rfdone

E. linux shell遍历当前文件夹中的txt文件并处理生成新的文件

先以a.txt为例:

awk-vRS=""'{n=split($0,a,"《[^》]+》");for(i=2;i<n;i+=2)print"《keywords》"a[i]"《/keywords》"}'a.txt>>./newfile/a.txt

这样就行了。

为了可读性,我将一条awk语句写成了多行。回

实际测试结答果如下:

解说:

RS=""

将awk的记录分隔符设置为空(默认是换行符),即将整个a.txt文本看做一条记录。

n = split($0,a,"《[^》]+》");

以正则"《[^》]+》"匹配的内容作为分隔符,对文本内容进行分割并将分割结果存入数组a,分割出的数目(数组大小)即为split函数的返回值n。这里暂且不对该正则做过多解释,否则喧宾夺主,有需要请追问,我再补充。

for(i=2;i<n;i+=2) print "《keywords》"a[i]"《/keywords》"

打印数组下标为偶数的元素并在首尾分别加上关键字标记以还原。数组下标从1开始。

其他文件可作相同处理。如果文件较多,你可以搞个循环去做。这个应该不难。

F. linux 的 shell,两个文件夹A,B。想要把A里的文件移动到B中,判断B文件夹

#!/bin/bashfor i in ` ls A`dols B/$iif [ $? -eq 0 ]thenecho Same Folderelsecp A/$i B/fidone试试看这个

G. 在linux shell(bash)编程中,如何通过递归方式遍历文件

写一个函数,函数的参数是目录路径字符串函数内使用 ls -s dir_path , 然后for 遍历循环如果是目录则继续调用自身如果是文件则答应文件名从执行优化的角度来讲,可以把判断目录还是文件的代码放在循环外层. 好久没写shell了 ,我这也没环境测试 , 只能给个思路,函数的具体写法自己找一下资料吧.另外,find命令可以直接完成你要做的事.

H. linux shell 遍历文件夹 并将结果保存 到变量

#!/bin/bash(($#<1))&&echo"paramiszero!"&&exit1[!-d$1]&&echo"$1notpath"&&exit1dir=$1dir_p="$dirDirectory:"cd$dirdir=`pwd`foriin`ls$dir`doif[-d$i];then/tmp/sh/dir_file$i#我的脚本文件在/tmp/sh中,需要改一下这里elsedir_p="$dir_pFile$i"fidonecd..echo$dir_p

实验结果:

[[email protected] sh]# ./dir_file /tmp/python/

python_2 Directory : File 1.log File 2.log

python_3 Directory : File 3.log

/tmp/python/ Directory : File p File t.py File y.py

这样应该可版以吧,试试看权

I. bash脚本遍历目录指定后缀的文件,并执行操作

可以使用ls或者来完成对某个文件夹下所有文件的遍历比如使用ls可以简单地使用一个通配符来完成ls 某个目录/*也可以使用find来完成比如find 某个目录自然的也可以写一个shell脚本来进行遍历首先进行一个要遍历的文件夹然后循环查看每个文件如果该文件是一个文件夹的话则进入该文件夹做和上面相同的事件这样就可以该整个文件夹内的所有文件进行遍历了一个简单的代码如下#!/bin/bash function show(){cd $1for i in `ls`doif [ -d "$i" ]thenshow "$i"elseecho "$i"fidonecd ..}show $1exit 0该程序不能遍历以.开头的隐藏文件可以使用ls -a来进行遍历隐藏文件遍历时需要注意.和..这两个特殊文件下面是一个简单的代码#!/bin/bash function show(){cd $1for i in `ls -a`doif [ "$i" == "." ] || [ "$i" == ".." ]thencontinue;fiif [ -d "$i" ]thenshow "$i"elseecho "$i"fidonecd ..}show $1exit 0

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

先设定实验环境:#造5个目录,每个目录下,造3个文件和两个子目录如下:cd$home/tmpforiind1d2d3d4d5domkdir-p$itouch$i/1.txt$i/2.txt$i/3.txtmkdir-p$i/tmp1$i/tmp2done#检验测试环境:$ls-lrd1total0-rw-r–r–1wenleecomm0dec2210:351.txt-rw-r–r–1wenleecomm0dec2210:352.txt-rw-r–r–1wenleecomm0dec2210:353.txtdrwxr-sr-x2wenleecomm256dec2210:35tmp1/drwxr-sr-x2wenleecomm256dec2210:35tmp2/#利用下列脚本来实现你要做的:cd$home/tmpforiin*/1.txtdoecho"found$i,save$iandremoveeverythingelseunder$(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_dirmkdir-p$curr_dirmv/tmp/${save_this_file}.$$$curr_dirdone#屏幕执行输出如下:foundd1/1.txt,saved1/1.txtandremoveeverythingelseunderd1/foundd2/1.txt,saved2/1.txtandremoveeverythingelseunderd2/foundd3/1.txt,saved3/1.txtandremoveeverythingelseunderd3/foundd4/1.txt,saved4/1.txtandremoveeverythingelseunderd4/foundd5/1.txt,saved5/1.txtandremoveeverythingelseunderd5/#复验实验环境:$ls-ld?/*-rw-r–r–1wenleecomm0dec2210:35d1/1.txt-rw-r–r–1wenleecomm0dec2210:35d2/1.txt-rw-r–r–1wenleecomm0dec2210:35d3/1.txt-rw-r–r–1wenleecomm0dec2210:35d4/1.txt-rw-r–r–1wenleecomm0dec2210:35d5/1.txtok?thanks!

未经允许不得转载:山九号 » linuxshell遍历文件夹|linux shell 命令怎么遍历目录

赞 (0)