终端noob需要一些帮助:)
所以基本上它是基于从eHDD到我的计算机的文本文件的搜索和复制。我想最简单的方法是终端命令。你有什么建议吗?提前谢谢!
答案 0 :(得分:1)
任务可以分为三个:从文件中读取搜索条件;按标准查找文件;复制找到的文件。我们分别讨论每一个并将它们组合成一个单行的步骤:
.csv
文件由于您的.csv
文件几乎只是一个文本文件,每行有一个标准,因此非常简单:仅cat
文件。
$ cat file.csv
bea001f001
bea003n001
bea007f005
bea008f006
bea009n003
我们将使用find
。示例:您有一个目录/Users/me/where/to/search
,并希望查找名称以bea001f001
开头的所有文件:
$ find /Users/me/where/to/search -type f -name "bea001f001*"
如果要查找以bea001f001
结尾的所有文件,请将星形通配符(零或多)移动到搜索条件的开头:
$ find /Users/me/where/to/search -type f -name "*bea001f001"
现在您已经可以猜出包含名称bea001f001
的所有文件的搜索条件如下:"*bea001f001*"
。
我们使用-type f
告诉find
我们只对查找文件而不是目录感兴趣。
我们使用xargs
将文件内容传递给find
-name
个参数:
$ cat file.csv | xargs -I [] find /Users/me/where/to/search -type f -name "[]*"
/Users/me/where/to/search/bea001f001_xy
/Users/me/where/to/search/bea001f001_xyz
/Users/me/where/to/search/bea009n003_zq
我们使用cp
。这非常简单:cp file target
会将file
复制到目录target
(如果它是目录,或替换名为target
的文件)。
我们将结果从find
传递给cp
而不是通过管道传递,而是使用传递给-exec
的{{1}}参数:
find