Shell
如何組織並將目錄的這一部分剪切成文件?
我的主要目標是複制目錄的內容並將其發送到文件。然後刪除目錄位置以僅具有名稱。然後組織它的內容,但大多數出現。這也是作業,我的限制是它必須是一個命令
這是我認為會做的工作,但它沒有
wc -l ~location/folder/folder/*.log > ~/log.info | cut -d "/" -f9 ~/log.info | sort
我的輸出
1 /s/s/s/s/location/folder/folder/a.log 1 /s/s/s/s/location/folder/folder/b.log 1 /s/s/s/s/location/folder/folder/c.log 3 /s/s/s/s/location/folder/folder/d.log 2 /s/s/s/s/location/folder/folder/e.log
我想要它是什麼
1 a 1 b 1 c 2 e 3 d
您可以通過管道輸出通過以下方式去除所有不需要的位
sed
:wc -l ~location/folder/folder/*.log > ~/log.info cut -d "/" -f9 ~/log.info | sort | sed 's_/.*/__;s_\.log$__'
怎麼樣:
perl -e 'print sort map {s/(\d).*(\w)\..*//r} <>'
(需要 perl 5.14+ - 這可能已經安裝在您的系統上)
使用內聯的 perl 程式碼:
- 讀取
<>
哪個是 STDIN 或在命令行上指定的文件。- 使用替換正則表達式,它
(\d)
在 a 之前擷取一個數字和一個字母.
(\w)\.
- 然後返迴轉換後的字元串。
r
正則表達式標誌。- 用於
map
迭代STDIN
。- 並
sort
…好吧,排序。- 並
輸出:
1 a 1 b 1 c 2 e 3 d
或者:
perl -e '%x=map {open($f,'<',$_); @f=<$f>; $_=>''.@f} @ARGV;print "$x{$_} $_\n" for sort {$x{$a}<=>$x{$b}} keys %x;' ~location/folder/folder/*.log