计算机正在运行 Yosemite。我试图通过命令行将几个文档从下载文件夹移动到文档
find . -iname '*.pdf' -exec mv "{}" ./Documents \
给出的答案几乎回答了所有问题。我现在只是想知道移动的文件会发生什么。它们位于 root 用户的 Documents 文件夹中吗?
答案1
要移动文件,您不需要先找到它们。你可以这样做:
mv *.pdf ../Documents
如果您坚持使用查找:
find . -iname '*.pdf' -exec mv {} ../Documents \;
这里最后一个“\”是转义“;”这样的字符。这样 shell 就可以正常工作了。
答案2
该命令最好如下所示。
find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents \;
请注意反斜杠后面的分号。或者,也可以如下更好。
find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents +
请注意所使用的加号。
或者甚至如下。
find ~/Downloads -iname *.pdf -exec mv {} ~/Documents +
周围的单引号{}
用于告诉 shell 不要将引号内的字符解释为任何类型的 shell 标点符号。通常不需要它们,但使用单引号并不是一个坏习惯。据我所知,这只是fish
扩展{}
到其他方面。这些{}
字符本身基本上代表了找到的文件的列表。
参数两边的双引号iname
也不是必需的,但使用它们也不是一个坏习惯。
问题中的命令使用继续字符,因此Enter在它后面按应该只会提供您可以继续键入的另一行。那么,在该命令之后还输入了什么,或者您只是忘记在问题中输入分号?如果该命令是作为普通用户键入的,则 PDF 文件可能仍位于您的主目录中的某个位置。
打开终端并输入 是最有用的man find
。然后,请参阅“示例”部分,了解涵盖此场景的使用说明。
要查找系统上的所有 PDF 文件:
cd && find / -iname "*.pdf" 1>found.txt
这将创建一个列表,found.txt,其中包含普通用户帐户有权列出的所有 PDF 文件。我不知道是否有足够的信息来回答丢失的文件去了哪里。
答案3
我假设您使用“查找”,因为子目录中有 pdf 文件,或者您只需使用“mv *.pdf ../Documents”。首先,我会执行以下操作,只是为了确保该命令正在执行我想要的操作。
寻找 。 -类型 f | grep 数据$
然后我用 xargs 填写命令的其余部分
寻找 。 -类型 f | grep 数据$ | xargs mv ../文档
作为一种习惯,我喜欢将“grep”和“xargs”放在命令的末尾,因为我已经知道输出以及它们正在做什么。