【问题标题】:Unix - Find and printf only part of filenameUnix - 仅查找和打印文件名的一部分
【发布时间】:2018-03-13 10:38:08
【问题描述】:

我有这个命令:

find <path> -mindepth 2 -type f -name '*_????????????.csv' -printf '\n%AD %AT %p' | sort -b -nr | cut -c 30-

结果:

Date, Time and Path

但我需要打印? 中的内容(在_.csv 之间)。

【问题讨论】:

  • 但是你的命令中没有括号。
  • @bigeast,我的错

标签: bash unix terminal


【解决方案1】:

假设您的文件夹结构如下所示:

ubuntu#  find ./  -type f -name '*.csv'
./file_12345.csv
./subfolder/moremore_hahahaha.csv
./45468_somefile.csv

在这种情况下可以这样做:

find ./  -type f -name '*.csv' -exec basename {} \; | awk -F'[_.]' '{print $2}'

结果:

12345
hahahaha
somefile

根据 OP 的评论进行编辑:

find ./  -type f -name '*.csv'  -printf '\n%AD %AT %p' | awk '{ $4 = $3 ; sub(/[.]csv/,"",$3) ;sub(/.*_/," ",$3) ; print $1 " " $2 " " $4 " " $3}'

问候!

【讨论】:

  • 我要保留 "\n%AD %AT %p" 结果:日期时间,路径,(_ 和 . 之间的文件名部分)
猜你喜欢
  • 1970-01-01
  • 2018-08-17
  • 2017-05-12
  • 1970-01-01
  • 2020-12-19
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多