Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix从文本文件中的列表中查找pdf文件_Unix_Find_Move - Fatal编程技术网

Unix从文本文件中的列表中查找pdf文件

Unix从文本文件中的列表中查找pdf文件,unix,find,move,Unix,Find,Move,我有一个目录(用于尾注),里面装满了PDF文件(其中1000个)。我使用Unix打印了所有pdf文件的列表,并将此列表保存为文本文件。这些pdf文件大多位于我的计算机中的其他目录中(重复) 现在,我想使用find命令在我的计算机的其余部分搜索这些pdf文件的副本,如果找到副本,请将其移动到新目录。如果一个特定的文件名被多次找到,我想给每个文件名一个唯一的名称(如basename.pdf.1、basename.pdf.2等)。最后,我想要一个目录来存放所有的副本,这样我就可以仔细检查它们,然后删除

我有一个目录(用于尾注),里面装满了PDF文件(其中1000个)。我使用Unix打印了所有pdf文件的列表,并将此列表保存为文本文件。这些pdf文件大多位于我的计算机中的其他目录中(重复)

现在,我想使用find命令在我的计算机的其余部分搜索这些pdf文件的副本,如果找到副本,请将其移动到新目录。如果一个特定的文件名被多次找到,我想给每个文件名一个唯一的名称(如basename.pdf.1、basename.pdf.2等)。最后,我想要一个目录来存放所有的副本,这样我就可以仔细检查它们,然后删除)

但是,我不希望find搜索列表的来源目录或Dropbox,因为我不想移动这些pdf文件(只移动散布在我计算机中的其他pdf文件)

我已经发现(我认为)如何完成完成这项任务所需的所有步骤,但我似乎无法将所有内容都整合到一个工作的Unix命令中

1) 要在排除目录的同时查找文件,请执行以下操作:

find -name "what to search for" -not -path "excluded_directory"

还是我现在最喜欢的

find . -name '*.what_to_find' | grep -v exludeddir1 | grep -v excludeddir2
2) 要将文本文件读入“查找”并将这些行用作搜索模式,请执行以下操作:

find . type f -print | fgrep -f file_list.txt
3) 查找和移动文件的步骤

find / -iname "*.what_to_find" -type f -exec mv {} /new_directory \;

或者(重命名文件,使具有相同名称的文件不会被彼此覆盖)。我还没有完全弄清楚这个命令中发生的一切

find -name '*.what_to_find' -type f -exec bash -c 'mv -v "$0" "./$( mktemp "$( basename "$0" ).XXX" )"' '{}' \;
因此,我可以单独执行这些命令,但无法使它们按预期协同工作(可能我的命令顺序错误?其他问题?)

非常感谢您的帮助! 谢谢
Derrick

嗯,我不能完全按照自己的意愿完成这项任务,但我找到了一个解决办法,完成了任务

我在尾注中打印了一个所有PDF的列表,然后删除了路径名,只留下文件名(text wrangler中的find和replace函数)。然后我使用find命令在我的计算机上搜索这个列表,打印每个PDF的所有事件

然后在text wrangler中,我删除了所有包含尾注PDF初始路径的行,只留下了所需的副本

接下来,我使用find命令搜索这些精确路径,并将它们移动到一个新文件夹中


总而言之,我使用了与我在原始帖子中完全相同的命令,并得到了text wrangler的一点帮助。不幸的是,我从未想到如何将所有需要的步骤组合到一个unix命令中

在过去的几天里,针对类似的问题,出现了几个问题。尝试搜索
[bash]|[linux]查找移动|重命名
这些
|
ed项表示唯一的实体。不要试图搜索那个精确的字符串,你不会得到任何东西。祝你好运
find / -iname "*.what_to_find" -type f | xargs -I '{}' /new_directory
find -name '*.what_to_find' -type f -exec bash -c 'mv -v "$0" "./$( mktemp "$( basename "$0" ).XXX" )"' '{}' \;
find . type f -print | fgrep -f file_list.txt | grep -v excludeddir1 | grep -v excludeddir2 -exec bash -c 'echo mv -v "$0" "./$( mktemp "$( basename "$0" ).XXX" )"' '{}' \;