Linux 从系统编号列表中匹配文本文件
我有约60K的书目记录,可以通过系统编号识别。这些记录还保存全文(以系统编号命名的单个文本文件) 我有5K的系统编号列表,我需要找到一种方法,只复制每个5K列表中的文本文件。 所有文本文件都存储在一个目录(Linux 从系统编号列表中匹配文本文件,linux,bash,shell,Linux,Bash,Shell,我有约60K的书目记录,可以通过系统编号识别。这些记录还保存全文(以系统编号命名的单个文本文件) 我有5K的系统编号列表,我需要找到一种方法,只复制每个5K列表中的文本文件。 所有文本文件都存储在一个目录(/fulltext)中,并按照以下内容命名: 014776324.txt. 5k列表是存储在单独目录中的纯文本(例如/5k\u列表1,5k\u列表2,…),其中每个系统编号与.txt文件匹配 例如:书目记录014776324与014776324.txt匹配 我正在努力寻找一种方法,只将相应的文
/fulltext
)中,并按照以下内容命名:
014776324.txt.
5k列表是存储在单独目录中的纯文本(例如/5k\u列表1
,5k\u列表2
,…),其中每个系统编号与.txt
文件匹配
例如:书目记录014776324
与014776324.txt
匹配
我正在努力寻找一种方法,只将相应的文本文件复制到5k_列表_*文件夹中
有什么想法吗
确实非常感谢,让我们假设以这种方式调用以下脚本:
./the-script.sh fulltext 5k_list_1 5k_list_2 [...]
或者更简洁地说:
./the-script.sh fulltext 5k_list_*
然后尝试使用以下(完全未测试)脚本:
#/usr/bin/env bash
设置-eu#启用错误检查
src_dir=$1#第一个参数是从何处复制文件
班次1
列表(目录);;do#隐式使用剩余的参数
在阅读书目记录系统时;做
cp“$src_dir/$sys_num.txt”“$list_dir/”
完成<“$list_dir/list.txt”
完成
呃,对不起,你想从我们这里得到什么?一个脚本?你想只复制那些名字列在一个文本文件(一种索引)中的文件吗?你可以用AWK或者GREP来实现,但是我很难理解你想复制什么。你能进一步解释一下吗?Thanks@trojanfoe,不,我不想要现成的脚本。@退出,我将研究AWK实用程序。谢谢
#!/usr/bin/env bash
set -eu # enable error checking
src_dir=$1 # first argument is where to copy files from
shift 1
for list_dir; do # implicitly consumes remaining args
while read bibliographic record sys_num rest; do
cp "$src_dir/$sys_num.txt" "$list_dir/"
done < "$list_dir/list.txt"
done