黑帽联盟

 找回密码
 会员注册
查看: 645|回复: 0
打印 上一主题 下一主题

[脚本语言] Shell遍历文件夹下所有文件

[复制链接]

895

主题

38

听众

3329

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    昨天 22:31
  • 签到天数: 1652 天

    [LV.Master]伴坛终老

    一、Shell遍历文件夹所有文件
    1. #!/bin/bash
    2. for file in `ls /path/to/folder`
    3. do
    4.     echo $file
    5. done
    复制代码
    该脚本使用for循环遍历文件夹下所有文件,并使用echo命令输出文件名。其中,/path/to/folder为要遍历的文件夹路径。

    与for语句配合使用的通配符有:
    • *
    • ? (表示任意一个字符)
    • [a-z] (表示任意一个小写字母)
    • [A-Z] (表示任意一个大写字母)

    二、Shell循环遍历文件夹
    1. #!/bin/bash
    2. for folder in `ls -l /path/to/folder | grep "^d" | awk '{print $NF}'`
    3. do
    4.     echo $folder
    5. done
    复制代码
    该脚本使用for循环遍历文件夹,并筛选出文件夹,并使用echo命令输出文件夹名。其中,/path/to/folder为要遍历的文件夹路径。

    该脚本中使用了管道符和awk命令,其中,ls -l /path/to/folder是列出文件夹的详细信息,grep "^d"是从中筛选出开头为d的行,即文件夹,awk '{print $NF}'是输出每行的最后一列,即文件夹名。


    三、Shell读取文件夹下所有文件
    1. #!/bin/bash
    2. files=`ls /path/to/folder`
    3. for file in $files
    4. do
    5.     content=`cat $file`
    6.     echo "File: $file"
    7.     echo "Content: $content"
    8. done
    复制代码
    该脚本使用ls命令读取文件夹下所有文件,在for循环中读取文件内容并输出。其中,/path/to/folder为要遍历的文件夹路径。
    该脚本中使用了反引号将ls命令的输出结果赋值给files变量,并使用cat命令获取文件内容,输出文件名与内容。


    四、Shell脚本遍历文件夹
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. function list_files(){
    4.     for file in `ls $1`
    5.     do
    6.         if [ -d $1"/"$file ]
    7.         then
    8.             list_files $1"/"$file
    9.         else
    10.             echo $1"/"$file
    11.         fi
    12.     done
    13. }
    14. list_files $folder
    复制代码
    该脚本使用自定义函数递归遍历文件夹下所有文件,并使用echo命令输出文件路径。其中,/path/to/folder为要遍历的文件夹路径。
    在该脚本中,使用if语句判断是否为文件夹,如果是则递归调用list_files函数,否则输出文件路径。


    五、Shell遍历文件夹并提取文件名字
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. files=`ls $folder`
    4. for file in $files
    5. do
    6.     filename=`basename $file`
    7.     echo "Filename: $filename"
    8. done
    复制代码
    该脚本使用ls命令读取文件夹下所有文件,在for循环中使用basename命令提取文件名并输出。其中,/path/to/folder为要遍历的文件夹路径。
    basename命令可以从文件路径中提取出文件名。


    六、Shell递归遍历文件夹
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. for file in `find $folder -type f`
    4. do
    5.     echo "File: $file"
    6. done
    复制代码
    该脚本使用find命令递归遍历文件夹下所有文件,并使用echo命令输出文件路径。其中,/path/to/folder为要遍历的文件夹路径。
    find命令是一种非常灵活的查找文件的工具,可以根据各种条件查找文件。

    七、Shell文件夹下所有文件循环
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. cd $folder
    4. for file in *
    5. do
    6.     echo "File: $file"
    7. done
    复制代码
    该脚本使用cd命令进入文件夹,使用for循环遍历文件夹下所有文件并输出文件名。其中,/path/to/folder为要遍历的文件夹路径。
    在for循环中,*通配符表示匹配所有的文件和文件夹。


    八、Linux Shell遍历文件夹
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. for file in $(ls $folder)
    4. do
    5.     echo "File: $folder/$file"
    6. done
    复制代码
    该脚本使用ls命令读取文件夹下所有文件,在for循环中输出文件路径。其中,/path/to/folder为要遍历的文件夹路径。
    在for循环中,$(ls $folder)表示将ls命令的输出结果作为for循环的参数。


    九、Shell脚本遍历文件夹并删除文件
    1. #!/bin/bash
    2. folder="/path/to/folder"
    3. for file in `find $folder -type f`
    4. do
    5.     rm -f $file
    6. done
    复制代码
    该脚本使用find命令递归遍历文件夹下所有文件,并使用rm命令删除文件。其中,/path/to/folder为要遍历的文件夹路径。
    在for循环中,`find $folder -type f`表示返回所有的文件路径,-type参数指定只返回普通文件。


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部