2016-04-07 136 views
0

我试图将包含文件列表的文本文件全部复制到目录中。在这个目录中,他们将具有唯一的目录名称。文本文件结构的例子可以看到下面:将列表中的所有文件复制到唯一目录

/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000003/s01_2011_11_01/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000003/s01_2011_11_01/a_1.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000003/s02_2011_11_11/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000003/s02_2011_11_11/a_1.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s01_2009_02_13/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s02_2010_10_02/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s03_2010_10_02/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s04_2010_10_03/a_.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s04_2010_10_03/a_1.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s04_2010_10_03/a_2.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s04_2010_10_03/a_3.edf 
/data/isip/data/tuh_eeg/v0.6.0/edf/001/00000005/s04_2010_10_03/a_4.edf 

我需要一个shell命令或Emacs的宏通过这个列表,并将它们全部复制到独特的目录当前工作目录中。唯一的目录将取决于文件;例如,前两个文件,目录将

/001/00000003/s01_2011_11_01/ 

我曾尝试使用Emacs的宏这样做,但我无法得到它的工作。 shell命令或EMAC宏可以工作。

回答

0

事情就这么简单:

cat list | sed "s/^.*edf\/\(.*\)\/\(.*\)$/mkdir -p root_dir\/\1 \&\& cp \0 root_dir\/\1\/\2/" | sh 

如果OSX - 安装GNU-sed和使用gsed而不使用sed。运行没有|的命令嘘看看它会做什么。当然,一定要调整root_dir。

相关问题