【发布时间】:2014-06-03 01:14:13
【问题描述】:
有问题的两个目录的布局是:
folder1
-file1
-file2
folder2
-file1
-file2
目录中的文件名称相同。我尝试使用rm 以编程方式删除文件夹 2 中的文件:
for f in /Users/michelegiarratana/1/*; do rm /Users/michelegiarratana/2/$f
但这不起作用。 $f 是完整路径吗?我如何获得名称?
谢谢
【问题讨论】:
-
使用
basename:for f in /path/to/folder/1/*; do rm "/path/to/folder/2/$(basename "${f}")"; done -
它仍然看到我 rm: /Users/michelegiarratana/2/*: 没有这样的文件或目录
-
这可能意味着
/Users/michelegiarratana/1/中没有文件。 -
不,两者的文件相同
-
*字符被bash扩展为“目录中的所有文件”。如果 /Users/michelegiarrantana/ 1 / 下有文件,则*将被这些文件名替换。但是,您的错误消息是rm: /Users/michelegiarratana/2/*: No such file or directory。当没有文件可供*展开时,就会发生这种情况。在这种情况下,它被视为文字*字符,即。basename $f == '*'。所以你实际上是在运行rm /Users/michelegiarratana/2/*。