我必须删除每个目录中的一个特定文件。
示例:MKRUW、DKRUW、TKRUW 在每个目录中,我需要输入 MKRUW/default/file 并删除 .dat 文件。
答案1
我假设MKRUW
、DKRUW
等是目录。转到每个目录的父目录,然后尝试:
find . -name '*.dat'
如果您对找到的文件列表感到满意.dat
并且希望继续删除这些文件,请再次运行相同的搜索,但添加参数以删除文件:
find . -name '*.dat' -exec rm -f {} \;
当然,你可以自由地改变*.dat
成不那么通用的东西。例如,如果您只想删除名为 的文件info.dat
,则可以使用find . -name 'info.dat'
.
答案2
假设MKRUW
、DKRUW
、TKRUW
是目录,并且在每个目录中,您想要删除匹配的文件default/file/*.dat
,并且您正在运行一个相当现代的 shell,您可以使用:
echo {MKRUW,DKRUW,TKRUW}/default/file/*.dat
获取相关文件的名称列表。
当您确信这是要删除的列表时,只需rm
替换echo
:
rm {MKRUW,DKRUW,TKRUW}/default/file/*.dat
这是有效的,因为shell 会通过将参数分解为更多数量的参数(每个匹配条目一个参数)来{...,...,...}
扩展(与)。*.dat
然后将这些参数传递给命令,在上述情况下分别是echo
和rm
。因此,上面的rm
命令相当于,但需要的输入量比以下命令少得多:
rm MKRUW/default/file/*.dat DKRUW/default/file/*.dat TKRUW/default/file/*.dat