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

 更新时间:2020年05月30日 10:17:36   作者:migoo  
这篇文章主要介绍了基于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

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

相关文章

  • 详解Centos中完全删除mysql的方法

    详解Centos中完全删除mysql的方法

    本篇文章主要介绍了Centos中完全删除mysql的方法,非常具有实用价值,需要的朋友可以参考下。
    2017-01-01
  • Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的实现方法

    Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的实现方法

    下面小编就为大家分享一篇Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Linux命令 sort、uniq、tr工具详解

    Linux命令 sort、uniq、tr工具详解

    这篇文章主要介绍了Linux命令 sort、uniq、tr工具详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 阿里云LNMP 云服务器重启后网站打不开解决方法

    阿里云LNMP 云服务器重启后网站打不开解决方法

    购入了阿里云云服务器之后,感觉十分满意,特别是阿里云的“快照”功能,对于折腾帝来说简直就是神器。云服务器随便弄,弄坏了大不了一个“回滚快照”,秒秒钟的事而已
    2013-06-06
  • linux中把.c的文件编译成.so文件

    linux中把.c的文件编译成.so文件

    这篇文章主要介绍了linux中把.c的文件编译成.so文件的相关资料,本文以编译mylib.c为例讲如何编译.so文件,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 自制YUM仓库的步骤讲解

    自制YUM仓库的步骤讲解

    今天小编就为大家分享一篇关于自制YUM仓库的步骤讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux CentOS 7.0中java安装与配置环境变量的步骤详解

    Linux CentOS 7.0中java安装与配置环境变量的步骤详解

    这篇文章主要给大家分享介绍了关于Linux CentOS 7.0中java安装与配置环境变量的相关资料,文中通过示例代码将安装与配置的过程介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • Centos6安装中文字体的方法

    Centos6安装中文字体的方法

    这篇文章主要介绍了Centos6安装中文字体的方法,本文给大家介绍的非常详细具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • linux查看端口是否开放的方法总结

    linux查看端口是否开放的方法总结

    在本篇文章里小编给大家整理了关于linux查看端口是否开放的方法和相关知识点,需要的朋友们跟着学习下。
    2019-03-03
  • Apache rewrite的重写相关的参数说明

    Apache rewrite的重写相关的参数说明

    Apache的rewrite的重写非常常用,现总结了一下.
    2008-08-08

最新评论