簡體   English   中英

如何創建一個以txt作為Linux降序子目錄的txt文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM