【发布时间】: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
find?base_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}"