2016-04-07 138 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。

相關問題