【问题标题】:Find files and print only partial-parent-folder+filename查找文件并仅打印部分父文件夹+文件名
【发布时间】:2017-12-18 16:18:56
【问题描述】:

这个问题与我正在寻找的问题非常相似。 Find files and print only their parent directories

我不想打印完整路径,而是它的一半和文件本身。

例子:

/disk1/data/foo-1/xx.csv
/disk1/data/foo7/yy.csv
/disk1/data/bar-2/zz.csv
/disk1/data/bar9/nn.csv

我想打印如下:

foo-1/xx.csv
foo7/yy.csv
bar-2/zz.csv
bar9/nn.csv

我目前正在使用此代码:

find ${base_folder} -type f -mmin +2 -name "*.csv" -print | rev | cut -d"/" -f1-2 | rev > ${LIST}

哪个有效,并且几个月来它 100% 的时间都有效。

我想知道是否有更好/更漂亮的方式来编写相同的代码。

【问题讨论】:

  • 还有什么问题?你只想要一个“更漂亮”的版本?
  • 你保证 GNU findbase_folder 的值是多少?
  • 顺便说一句,find ${base_folder} 的行为与find $base_folder 完全相同——两者都将base_folder 包含的名称拆分为空格,并将该拆分过程创建的每个单词扩展为一个全局。如果您想避免这种行为,请引用扩展名:find "$base_folder"find "${base_folder}"
  • @Pesa 没错,比rev 更漂亮的版本 - 找到(:
  • @CharlesDuffy 感谢您的建议!我有很多文件,有些真的很长,我想避免文件名中的空格问题。我相信"$var"${var} 是相同的,但在这种情况下使用${var}"the word is: ${var}"

标签: bash find


【解决方案1】:

使用find -printf%P 以避免在输出中包含base_folder

find "$base_folder" -type f -mmin +2 -name "*.csv" -printf '%P\n'

【讨论】:

  • 我喜欢这个解决方案!我试图用sed 做一些奇怪的事情,但我对正则表达式并不熟练。测试和工作!谢谢楼主!!
猜你喜欢
  • 2012-03-24
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2015-08-12
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多