我正在使用Mac终端,在内部使用linux命令查找“.jpg”文件列表,并尝试使用以下命令移动到当前目录中的“myimages”文件夹。
find . -name "*.jpg" -type f -exec mv {} myimages \;
执行上述命令时,我没有名为“myimages”的文件夹。
现在我的所有.jpg文件都消失了,并且在当前目录中创建了一个新文件“myimages”。
我想我的所有图像都会转换为名为“myimages”的单个文件。
如何从“myimgages”文件中取回所有图像?
请帮帮我。
答案 0 :(得分:2)
你的图片消失了。每个图像都移动到文件myimages
,有效地覆盖现有文件。您可以尝试使用恢复软件将其取回。
将来,请使用命令find . -name "*.jpg" -type f -exec mv {} myimages/ \;
(请注意尾部斜杠)。您还可以向-i
提供mv
标记,以便在覆盖现有文件之前提示。
答案 1 :(得分:2)
你的照片消失了。您的命令将所有命令一个接一个地重命名为myimages
。
你可以:
顺便说一下,你不能在Mac上运行“linux命令”。在Mac上,您运行的是Mac命令(为Mac OS X编译)或shell脚本。此外,ubuntu
标记对您的问题没有任何意义。
将来,如果它应该是一个目录,你可以通过在目的地末尾添加一个斜杠来避免这样的错误:
find . -name "*.jpg" -type f -exec mv {} myimages/ \;
这样您会收到一条错误消息:
mv:将blah重命名为myimages /:没有这样的文件或目录
什么都不会被移动,你仍然会有你的领域。
答案 2 :(得分:1)
如何从" myimgages"中取回所有图像文件?
你不能。由于目标目录myimages
不存在,find
的每个输出都会产生如下内容:
mv ./file1.jpg myimages
mv ./file2.jpg myimages
...
在每个命令中,目标都是myimages
。由于它不作为目录存在,mv
认为它是目标文件名。
您可以通过说:
来修复命令find . -name "*.jpg" -type f -exec mv -t myimages {} \;
答案 3 :(得分:1)
从备份中恢复它们。
您执行的命令是
mv file1 myimages # rename file
mv file2 myimages # rename file, discarding the old file previously referred to by myimages
等等。
除了尾部斜杠mentioned by knittl之外,我建议下次使用
find . -name "*.jpg" -type f -exec mv -t myimages/ {} +
明确指出“加倍”myimages
是目标目录,并允许在mv
次执行时移动多个文件。