bash - 基于位置的子集 ls
问题描述
我有一个文件夹中的文件列表,需要通过管道传递给更多命令,如果我在使用时知道文件的位置,ls -v file_*.nc
是否可以根据它们的位置删除/忽略文件?因此,如果ls -v file_*.nc
返回 300 个文件,并且我希望从管道中删除文件 8,73 和 151,我可以执行类似ls -v file_*.nc | {remove 8,73,151} | do other stuff
. 我不想删除/移动文件,我只是不希望它们通过管道传递到下一个命令。
解决方案
如果您想从输入中过滤掉您所说的:是否可以删除/忽略
您可以使用的文件grep -v <PATTERN>
,这-v
是一个独占匹配选项。
输入文件
ls -v1 txt*
txt
txt-1
txt-2
txt-3
txt-4
txt-5
txt-6
txt-7
txt-8
txt-9
txt-10
然后忽略任何包含 7、8、9 的文件
ls -v txt* | grep -v '[789]'
txt
txt-1
txt-2
txt-3
txt-4
txt-5
txt-6
txt-10
删除/忽略
txt-7
txt-8
txt-9
推荐阅读
- javascript - 在 Chrome 扩展中单击按钮时未显示文本
- powershell - 在远程位置连接的最后一个配置文件中获取文件上第 45 行的内容
- java - 为什么 Eclipse 的“Maven - 更新项目”试图构建部署目标?
- amazon-web-services - Xampp 与 Aws 问题
- ruby-on-rails - 如何在 Visual Studio Code 中启动特定的 Ruby 版本
- python - 在 Kivy 中传播事件
- windows - 打开文件时COBOL“找不到文件”
- sql-server - 使 SQL Server 数据库退出恢复模式时出错?
- php - 在 config.php 中加密 Roundcube 密码
- r - 将数据框中的三个变量从 chr 转换为 R 中的 int