csh - 如何使用正则表达式匹配文件位置列表?
问题描述
我正在尝试制作一个脚本,该脚本将根据文件路径识别文件位置和类型。例如,如果我有一个位置 /home/file/txt/test.txt 和 /home/file/tcl/test.tcl 。我想为第三个 / 位置创建变量。所以在示例情况下,这将是 txt 和 tcl。所以我会有一个遵循这种格式的位置列表。我想通过列表进行 foreach,然后将变量设置为第三个 / 位置。然后我将打印该变量。什么是正确的正则表达式?
解决方案
你的任务很模糊。发布所需的输入和输出总是好的。无论如何,如果我很好地理解了您的规范,这是您的任务的一些启动:
#!/bin/env csh
set dir='./file/'
set types=('tcl' 'txt')
foreach type (${types})
#HERE replace with Your commands
#example find with regex
echo " ... searching for *.${type} in ${dir}${type}/"
find "${dir}${type}/" -type f -regex '.*\.'"${type}"'$' -print0 | xargs -0 printf "%s\n"
end
exit 0
设置了dir
查找位置和 Your 的数组types
。Foreach 循环遍历 dir/type 并使用 regexp 查找具有类型后缀的文件。xargs
在这里是可选的,我故意放置它是为了展示如何正确处理文件。您可以将例如替换为:
xargs -0 -I {} cp {} /home/newdestination/
例如,如果您需要复制到新的目的地。
测试:
% ./list_file.csh
... searching for *.tcl in ./file/tcl/
./file/tcl/a.tcl
./file/tcl/b.tcl
... searching for *.txt in ./file/txt/
./file/txt/a.txt
./file/txt/b.txt
推荐阅读
- python - Tornado:从未检索到任务异常
- javascript - 循环遍历对象,从 Z 组织键 - 反向字母顺序
- ssl - 如果第一次失败,浏览器是否会重试 TLS 握手?
- python - python + 如何使用 -x 在 linux 上调试 python 脚本作为 bash
- javascript - 从对象数组派生唯一属性值数组
- .net - Visual Studio C#项目的免费依赖图
- c - 如何解决 C 中的 If 和结构问题?
- oracle - 在一列上选择 DISTINCT 并在 Oracle/TOAD 中返回多个其他列
- reactjs - 类型错误:firestore.collection 不是函数(React、Redux、Firestore)
- javascript - `$this` 的这两种用法有何不同?