linux - 通过通配符排除文件扩展名
问题描述
我有一个目录,其中的文件具有多个扩展名,例如 *.asc、.txt。.csv 等。我在脚本中使用此路径,我只能更改通过变量传递的文件名。
/home/myuser/mydirectory/{fileNameVariable}
我可以通过将 *.csv 作为变量值或 *.txt 传递给各个文件来选择所有 .csv。但是我想要做的是选择除 *.asc 之外的所有文件(.csv、.txt 等)。
有没有办法通过使用通配符我只能排除一个文件扩展名并选择其余的?
解决方案
您可以使用大括号扩展来仅选择您想要的名称和扩展名,并排除任何未命名的扩展名。例如,要查找目录中的所有文件,您可以使用.csv
:.txt
$ ls -al *.{csv,txt} ## note: no space after the separating comma
如果您有很多test1..., test2..., etc.
文件并且只想选择test2*.csv
和test2*.txt
文件,则可以将初始 glob 缩小到:
$ ls -al test2*.{csv,txt}
当然,您可以使用您的路径和变量名来代替test2
上面的。
推荐阅读
- firebase - Firebase 存储 - 如何授权文件下载?
- javascript - 更新 3 级嵌套数组 mongoose
- deno - Deno 相当于 Reader/Conn 的“窥视”?
- mixed-models - 具有不同结果测量次数的多变量多级模型
- selenium - 使用不同数据库文件的 Flask 应用程序进行 Selenium 测试
- python - 你如何编写一个绘制...2的pygame函数
- python - 如何更有效地组织 Padas Dataframes 中单元格内的元组列表?
- javascript - Shopify 如何使用 Liquid 代码段更新 UI 中的数量
- c++ - 如何将字符串转换为目录条目?
- java - 反思与收藏