基于linux命令提取文件夹内特定文件路径

最近需要实现自动化搜寻特定文件夹下的特定文件,并且需要分别保存文件路径与文件名。算然使用python的walk能够实现,但是感觉复杂了些。于是想看看linux自带的命令是否能完成这项工作。

环境

需要查找的目录结构如下

. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db

目标一:获取所有py文件名

如果只使用find . -name '*.py'进行查找,得出的结果是包含路劲的

./test/test.py
./test/regex.py
./MongoDB/cnt_fail.py

我们只需要文件名的话可以使用linux提供的命令basename

利用basename将find的所有搜索结果进行处理我们需要使用find的参数-exec

最终的命令为:

find . -name '*.py' -exec basename {} \;

结果:

test.py
regex.py
cnt_fail.py

其中{} 用于与-exec选项结合使用来匹配所有结果,然后支取其文件名。

目标二:获得所有py文件路径,去重复,删除开头的“./”字符

linux也有获取文件路径的命令dirname

略微修改之前的命令能够显示所有文件路径

find . -name '*.py' -exec dirname {} \;
搜索结果:

./test
./test
./MongoDB

可以看到路径存在重复,linux去除重可以利用sort再添加-u参数,-u参数用于去除排序结果中的重复项
我们需要把上一个命令的输出传递给sort作为输入,很自然想到了管道

管道命令操作符是:|,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard
error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.

添加sort之后的命令为

find . -name '*.py' -exec dirname {} \; | sort -u

运行结果结果为:

./MongoDB
./test

最后我们再利用cut删除每一个路劲之前的./字符,参数-c3-意思提取字符串(起始位置为1)的第3个字符到最后的子串
最终命令为:

find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-

运行结果:

MongoDB
test

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 查看linux服务器上mysql配置文件路径的方法

    在类NUIX的系统中,配置文件的位置一般在/etc/my.cnf 或者 /etc/MySQL/my.cnf 我们见过有些人尝试修改配置文件但是不生效,因为他们修改的并不是服务器读取的文件.例如Debian下,/etc/mysql/my.cnf才是MySQL读取的配置文件,而不是/etc/my.cnf. 如果不知道当前使用的配置文件路径,可以尝试下面的操作: 对于服务器上只有一个MySQL实例的典型安装,这个命令很有用 以上就是小编为大家带来的查看linux服务器上mysql配置文件路径的方法全部

  • Linux中如何查询运行文件的全路径的方法

    在linux中,有些地方需要使用绝对路径,对于一些命令,如java.mysql等,需要使用到运行文件所在的路径,给大家介绍一个命令,来查询这个路径. which 可以通过which查询运行文件的所在路径,具体如下: 命令详解 以mysql为例,命令如下: [work(zhaoweinan)@tjtxvm-144-80 soft]$ which mysql /opt/soft/percona-mysql55/bin/mysql 命令输出了运行文件mysql所在的路径 当没有该文件时,输出如下: [

  • window与linux项目部署之linux文件路径不存在问题

    很久没有写博客了,上周项目测试,发现了一些bug,其中之一有些费解,描述如下: 项目在windows上部署,上传图片功能一切正常,部署到linux服务器上,则莫名出错(大概是智障,居然忘记了*linux与windows文件目录的区别* ) 正常应该是这样: 实际上是这样: 从未遇到这种问题的土豆也有点懵逼,不管三七二十一,项目先重启再说,无效,那看看tomcat,还是无效,我太难了.作为你个资深菜鸡程序员,我自然还有第三第四第五种解决方法(baidu,google等等等),怀揣着不放弃的精神,继

  • linux中通过文件描述符获取文件绝对路径的方法

    在linux中,有时候我们只知道文件描述符却不知道它的名字及其完整的路径,如果我们想获取其路径该怎么办呢?其实很简单,在linux中每个被打开的文件都会在/proc/self/fd/目录中有记录,其中(/proc/self/fd/文件描述符号)的文件就是文件描述符所对应的文件.说道这里我们先停下了说一个函数: readlink(取得符号连接所指的文件) 相关函数 stat,lstat,symlink 表头文件 #include <unistd.h> 定义函数 int readlink (con

  • Linux下修改MySQL数据库数据文件路径的步骤

    使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysql_data/mysql Linux系统版本:centos7.6 MySQL数据库版本:5.7.25 步骤: 1.创建目标路径 mkdir -p /home/mysql_data 2.关闭MySQL systemctl stop mysqld 3.复制数据文件 cp -arp /var/lib/my

  • linux修改mysql数据库文件的路径

    mysql更改数据文件的存放路径感觉直接把/etc/my.cnf中的datadir改一下重启一下服务就行,但是从网上搜了n多资料,大部分都是更改my.cnf中的datadir及sock及启动脚本/etc/rc.d/init/mysqld中的datadir,按照网上提供的方案好像都不行,有没有大侠给个肯定的说法 其实只是要做两件事情:一个是mv一下socket和data的目录.也就是将其从原来的目录移动到指定的位置:第二,就是修改配置文件,假如直接是用mysql/bin下面的命令启动的话,直接改m

  • linux中tar打包指定路径文件的实现方法

    压缩: tar czvf /data/backup/test.tar.gz /data/a/b/directory 解压: cd /data/test tar xzvf /data/backup/test.tar.gz 问题是,解压后的文件,在/data/test/data/a/b/directory里面 要想解压在当前目录路径. 这样写就可以解决了 tar czvf /data/backup/test.tar.gz /data/a/b/directory 改成 tar czvf /data/b

  • 详解kali linux 常用文件与指令路径

    kali linux 常用文件与指令路径 重启网络 /etc/init.d/networking restart 语言设置文件 /etc/default/locale apt 安装deb保存目录 /var/cache/apt/archives 字体修改目录 /etc/fonts/conf.d 配置更新源文件 /etc/apt/sources.list 配置更多更新源文件,将list文件放入此目录文件 /etc/apt/sources.list.d 配置本机网络lo与eth0接口 /etc/net

  • 基于linux命令提取文件夹内特定文件路径

    最近需要实现自动化搜寻特定文件夹下的特定文件,并且需要分别保存文件路径与文件名.算然使用python的walk能够实现,但是感觉复杂了些.于是想看看linux自带的命令是否能完成这项工作. 环境 需要查找的目录结构如下 . |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db 目标一:

  • PHP递归遍历指定文件夹内的文件实现方法

    今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文件(包括子目录中的文件),于是,就想自己实现一个. 在写的时候发现一些操作文件夹的函数并不是自己想的那样.比如,dirname()根据提供的完整文件路径来取得文件所在的文件夹的路径,但如果你传入的是文件夹,它取的就是它的父文件夹.这点要明白.basename()也是同样的道理,传入文件夹路径取得就是

  • python压缩文件夹内所有文件为zip文件的方法

    本文实例讲述了python压缩文件夹内所有文件为zip文件的方法.分享给大家供大家参考.具体如下: 用这段代码可以用来打包自己的文件夹为zip,我就用这段代码来备份 import zipfile z = zipfile.ZipFile('my-archive.zip', 'w', zipfile.ZIP_DEFLATED) startdir = "/home/johnf" for dirpath, dirnames, filenames in os.walk(startdir): fo

  • 详解shell 遍历文件夹内所有文件并打印绝对路径

    例如你有一个文件夹路径是 /wls,如果想要遍历这个文件夹内的所有文件,并将它们保存到数组中,利用shell你可以这样做 for file in /wls/* do if test -f $file then arr=(${arr[*]} $file) fi done echo ${arr[@]} 这样就可以遍历wls文件夹下的所有文件并把它们的绝对路径存在arr这个数组中,但这还是不够的,因为文件夹中可能会有多个子文件夹,如果只过滤文件会遗漏掉子文件夹中的文件,所以需要扩展上面的方法,如果我们

  • 详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)

    Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)具体代码如下: private void SMT(HttpContext context) { string SqlConnection82 = System.Configuration.ConfigurationManager.AppSettings["LocalConnectionString"]; string path = context.Server.MapPath(@"

  • python 实现对文件夹内的文件排序编号

    使用时,需更改rootdir, 即文件保存的路径,以及要保存的格式,例如'.jpg' 如果排序前后文件格式一样,建议先随便换个格式,然后再换回来,也就是程序运行两次,第一次随便换个格式,第二次换成想要的格式. #!usr/bin/env python import os import os.path rootdir = "C:\\Users\\IronMan\\Desktop\\launch\\" files = os.listdir(rootdir) b=0 for name in

  • Python判断一个文件夹内哪些文件是图片的实例

    如下所示: def is_img(ext): ext = ext.lower() if ext == '.jpg': return True elif ext == '.png': return True elif ext == '.jpeg': return True elif ext == '.bmp': return True else: return False 调用时 for x in os.listdir(directory): if is_img(osp.splitext(x)[1

  • Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹

    一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

  • Linux中查看指定文件夹内各个子文件夹内的文件数量

    count脚本 #!/bin/sh numOfArgs=$# if [ $numOfArgs -ne 1 ]; then echo -e "Usage: \nbash $0 dirForCount" exit -1 fi # args ROOTDIR=$1 # core part find $ROOTDIR -maxdepth 1 -type d | sort | while read dir; do count=$(find "$dir" -type f | wc

  • python判断文件夹内是否存在指定后缀文件的实例

    该代码主要是基于python实现判断指定文件夹下是否存在指定后缀的文件.代码如下: import os Your_Dir='你的文件夹/' Files=os.listdir(Your_Dir) for k in range(len(Files)): # 提取文件夹内所有文件的后缀 Files[k]=os.path.splitext(Files[k])[1] Str2=['.wav','.mp3','.mp4'] if len(list(set(Str2).intersection(set(Fil

随机推荐