[英]how to create a txt file with columns being the descending sub-directories in Linux?
我的數據遵循以下結構:
../data/study_ID/FF_Number/Exam_Number/date,
數據目錄中包含176個參與者的子目錄。 ID號代表參與者ID,以下每個子目錄代表一些實驗編號。 我想創建一個txt文件,其中每個參與者一行,以下幾列:研究ID,FF_number,Exam_Number和日期。
但是,這變得更加復雜了,因為我想將參與者分成每塊〜15-20 ppt的塊進行以下分析。
有什么建議么? 干杯。
嗯,沒人嗎?
您應該重定向“ find”命令的輸出,考慮開關-type d和-maxdepth,並可能用sed解析它,用“ spaces”替換“ /”。 也許通過“ cut”和“ column -t”命令進行管道傳遞,“ sort”和“ uniq”將很有用。 除FF和ID外,其他名稱中是否包含空格或特殊字符(例如,與參與者的名稱有關)?
帶有“一個襯管”和幾個管道的TXT應該是可能的。
您應該嘗試一下,並發布有關此工作的初步結果:)
編輯:好的,我為我創建了一個結構,其中包含數千個目錄和子目錄,這些目錄和子目錄由參與者,考試編號等編號,看起來像這樣(也許與您所擁有的不完全相同,但是不用擔心)。 研究編號從5到150,FF從45到75,日期從2012_01_00到2012_01_30-這實際上使目錄總數非常龐大。
/Users/pwadas/bzz/data
/Users/pwadas/bzz/data/study_005
/Users/pwadas/bzz/data/study_005/05_Num
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_00
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_01
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_02
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_03
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_04
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_05
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_06
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_07
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_08
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_09
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_10
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_11
/Users/pwadas/bzz/data/study_005/05_Num/45_Exam/2012_01_12
現在,我想(引用)“每個參與者一行一行的txt文件,其以下各列:研究ID,FF_number,Exam_Number和日期。
因此,我使用以下一線:
find /Users/pwadas/bzz/data -type d | head -n 5000 |cut -d'/' -f5-7 | uniq |while read line; do echo -n "$line: " && ls -d /Users/pwadas/bzz/$line/*Exam/* | perl -0pe 's/.*2012/2012/g;s/\n/ /g' && echo ; done > out.txt
這是輸出(out.txt的前幾行)。 行很長,我在輸出的前80-90個字符處剪切了它:
dtpwmbp:data pwadas$ cat out.txt |cut -c1-90
data:
data/study_005:
data/study_005/05_Num: 2012_01_00 2012_01_01 2012_01_02 2012_01_03 2012_01_04 2012_01_05 2
data/study_005/06_Num: 2012_01_00 2012_01_01 2012_01_02 2012_01_03 2012_01_04 2012_01_05 2
data/study_005/07_Num: 2012_01_00 2012_01_01 2012_01_02 2012_01_03 2012_01_04 2012_01_05 2
data/study_005/08_Num: 2012_01_00 2012_01_01 2012_01_02 2012_01_03 2012_01_04 2012_01_05 2
dtpwmbp:data pwadas$
我希望這會對您有所幫助,並且您可以根據自己的需要和模式進行修改,這似乎就是我所能做的一切:)您應該分析一個襯板,尤其是“ cut”命令,並且perl-regex部分,該部分從“ ls”輸出中刪除換行符和完整目錄名稱。 從最佳角度來看,這可能是公平的,但是我想,美化不是重點,:)所以,祝你好運:) PS。 “ head”命令限制了N行的輸出,您可能想跳過| 頭.. | 部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.