bash - Bash 脚本返回给定扩展名的所有元素,而不使用打印标志
问题描述
我想创建在实际目录的所有文件夹中搜索并返回所有满足某些条件的文件的 shell 脚本,但不使用任何打印标志。(这里的条件是以.py结尾)
我做了什么:
find . -name '*.py'| sed -n 's/\.py$//p'
输出:
./123
./test
./abc/dfe/test3
./testing
./test2
我想达到的目标:
123
test
test3
testing
test2
解决方案
使用-exec
:
find . -name '*.py' -exec sh -c 'for f; do f=${f%.py}; echo "${f##*/}"; done' sh {} +
如果 GNUbasename
是一个选项,您可以将其简化为
find . -name '*.py' -exec basename -s .py {} +
POSIXbasename
稍微贵一点,因为您必须在每个文件上单独调用它:
find . -name '*.py' -exec basename {} .py \;
推荐阅读
- apache-kafka - Kafka Connect 的 jmx_prometheus_javaagent 配置?
- c# - 条件在加入中不起作用的地方
- javascript - 使用 API 将文件上传到预设的 Google Drive 帐户?
- python - 通过 tag_add() 添加多个标签时,Python Tkinter Text 小部件非常慢
- python - 如何在python中创建一个打印字符串中单词出现次数的程序
- c# - 使用匿名类型声明列表
- mysql - 为什么 mariaDB 数据库服务器中有三个 root 用户?
- haskell-snap-framework - Haskell Web 框架,快照:快照初始化失败
- java - 希望将坐标列表导出到 gpx 文件
- python - ImportError:没有名为 PyMesh 的模块