在linux中 “# fori in `ls` ; dosu-sh $i ;done ”命令是什么意思?

在linux中 “# fori in `ls` ; dosu-sh $i ;done ”命令是什么意思?,第1张

首先 在命令前面有个 '#'的意思是本句话是注释,并不实际执行...

再说你后面语句的意思,for ... in .... done是循环结构,ls是查看目录下的文件,su是以另一个身份($i),来运行一个shell,但问题是su 没有-sh选项,也就是说你这句话应该有问题才对.

整体分析是遍历将当前目录下的文件,每个文件执行su -sh XXX(这里XXX是当前目录下的所有文件),功能尚不明确,还请楼主明示.

#!/bin/bash

(( $# < 1 )) && echo "param is zero!" && exit 1

[ ! -d $1 ] && echo "$1 not path" && exit 1

dir=$1

dir_p="$dir Directory :"

cd $dir

dir=`pwd`

for i in `ls $dir`

do

    if [ -d $i ] then

        /tmp/sh/dir_file $i            #我的脚本文件在/tmp/sh中,需要改一下这里

    else

        dir_p="$dir_p File $i"

    fi

done

cd ..

echo $dir_p

实验结果:

[root@localhost 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

这样应该可以吧,试试看

比如修改一下目录下的所有文件的后缀

ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak

[root@ test]# touch a b c

[root@ test]# ls -l

total 0

-rw-r--r-- 1 root root 0 Apr 27 21:50 a

-rw-r--r-- 1 root root 0 Apr 27 21:50 b

-rw-r--r-- 1 root root 0 Apr 27 21:50 c

[root@ test]# ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak

[root@ test]# ls -l

total 0

-rw-r--r-- 1 root root 0 Apr 27 21:50 a.bak

-rw-r--r-- 1 root root 0 Apr 27 21:50 b.bak

-rw-r--r-- 1 root root 0 Apr 27 21:50 c.bak


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7568169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存