Shell

如何組織並將目錄的這一部分剪切成文件?

  • February 15, 2019

我的主要目標是複制目錄的內容並將其發送到文件。然後刪除目錄位置以僅具有名稱。然後組織它的內容,但大多數出現。這也是作業,我的限制是它必須是一個命令

這是我認為會做的工作,但它沒有

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…好吧,排序。
  • print列印出來。

輸出:

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 

引用自:https://unix.stackexchange.com/questions/259918