Shell脚本:当不存在具有相同名称的文件夹时删除文件

麦克风

我有一组文件夹和一组*.DAT文件。如果不存在具有相同名称(没有)的文件夹,
我想删除一个*.DAT文件.DAT
我花了一些时间来解决这个问题:

find . -type d > dirs.txt
for F in `find *.DAT`
do
  F=$(sed 's|\.DAT||g' <<< $F)
  if grep "$F" dirs.txt; then
    echo "$F found"
  else
    rm $F.DAT
  fi
done

但是我觉得应该有一个更简单的解决方案(优雅的单线吗?而无需创建文件?……?)。我对吗?

美国空军

如果您正在使用sed.DAT无需使用删除bash:内置参数扩展${F%.DAT}无需使用subshel​​l和外部程序即可达到相同的效果。

如果目录相对于.DAT文件位于任意位置,则目录列表文件是解决该问题的最有效方法,但是鉴于两个目录都位于同一位置,因此更直接的答案是:

find *.DAT | while read -r f; do if [ -d "${f%.DAT}" ]; then echo "${f%.DAT}" found; else rm "$f"; fi; done

请注意,这将处理带有嵌入式空格的文件名,而您的解决方案则不会。

对于其他外壳,可以使用类似的技术,但是我不能为它们辩护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

删除不同子目录中具有相同名称的文件夹的内容

Powershell脚本可移动具有相同名称的不同文件类型以共享文件夹

Powershell脚本将具有大致相同名称的文件从文件夹复制到另一个文件夹

如果使用批处理文件已经存在一个具有相同名称的文件夹,则创建编号文件夹

PM2:忽略监视所有具有相同名称的文件夹或文件

htaccess用于具有相同名称的重定向文件和文件夹

如何将文件移动到具有相同名称的相应文件夹中?

git忽略文件但不忽略具有相同名称的文件夹

合并不同文件夹中具有相同名称的文件

将多个文件移动到具有相同名称的不同文件夹

如何从C#中具有相同名称的文件夹中打开文件

Powershell,删除与.zip相同名称的文件夹

PowerShell脚本试图复制不存在的文件夹

自动脚本化两个具有相同名称的文件夹,但其中一个文件夹带有前缀

从git终端隐藏或删除不存在的文件夹

检查JQUERY的同一文件夹中是否存在1个或多个具有相同名称但具有不同扩展名的文件

Python:如何将具有特定名称的文件移动到具有相同名称的文件夹

使用bash将文件从已删除的文件夹移动到其原始路径时,应检查原始路径下是否存在相同名称的文件

如果文件夹中不存在文件,则删除文件夹 - Google Drive API

在同一目录中列出具有相同名称的文件夹-Delphi

在文件夹中合并具有相同名称的.csv

使用wget镜像具有相同名称的路径和子文件夹的网站

资产目录:访问不同文件夹中具有相同名称的图像

具有相同名称但文件夹不同的Windows Phone类

通过命令行创建具有相同名称的文件夹的zip

使用Linq c#查找具有相同名称的文件夹

当目录不存在时创建文件夹

文件/文件夹具有相同名称时的导入行为

尝试删除不存在的文件夹时 C# 崩溃