【问题标题】:Unix to find pdf files from list in text fileUnix从文本文件中的列表中查找pdf文件
【发布时间】:2014-01-20 15:00:30
【问题描述】:

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

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

但是,我不想查找创建我的列表的目录或我的 Dropbox,因为我不想移动这些 pdf 文件(只移动分散在我计算机中的其他 pdf)。

我已经找到(我认为)如何执行完成此任务所需的所有单个步骤,但我似乎无法将所有内容放在一起工作的 Unix 命令中。

1) 为了在排除目录的同时查找文件:

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

find build -not \( -path excluded_directory1 -prune \) -not \( -path excluded_directory2 -prune \) -name \*.what_to_find

或我目前最喜欢的

find . -name '*.what_to_find' | grep -v exludeddir1 | grep -v excludeddir2

2) 为了将文本文件读入 find 并将这些行用作搜索模式:

find . type f -print | fgrep -f file_list.txt

3) 查找和移动文件

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

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" )"' '{}' \;

非常感谢任何帮助! 谢谢, 井架

【问题讨论】:

  • 这几天有几个问题非常相似。尝试搜索 [bash]|[linux] find move|rename |ed 项目代表唯一实体。不要尝试搜索那个确切的字符串,你不会得到任何东西。祝你好运。

标签: unix find move


【解决方案1】:

好吧,我无法完全按照我的意愿完成这项任务,但我找到了一个解决方法,可以完成这项工作。

我打印了我在 Endnote 中拥有的所有 PDF 的列表,然后删除了路径名,只留下了文件名(文本管理员中的查找和替换功能)。然后我使用 find 命令在我的计算机上搜索此列表,打印每个 PDF 的所有出现。

然后在文本管理员中,我删除了包含尾注 PDF 初始路径的所有行,只留下所需的重复项。

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

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

【讨论】:

    猜你喜欢
    • 2013-03-30
    • 2018-05-09
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多