【发布时间】:2017-07-04 09:09:39
【问题描述】:
我有很多目录:
13R
613
AB1
ACT
AMB
ANI
每个目录都包含很多文件:
20140828.13R.file.csv.gz
20140829.13R.file.csv.gz
20140830.13R.file.csv.gz
20140831.13R.file.csv.gz
20140901.13R.file.csv.gz
20131114.613.file.csv.gz
20131115.613.file.csv.gz
20131116.613.file.csv.gz
20131117.613.file.csv.gz
20141114.ab1.file.csv.gz
20141115.ab1.file.csv.gz
20141116.ab1.file.csv.gz
20141117.ab1.file.csv.gz
etc..
从每个目录中获取第一个文件的目的
我期望的结果是:
13R|20140828
613|20131114
AB1|20141114
目录的名称是文件名中的日期。 我想我需要一个 find 和 head 命令 + awk 但我做不到,我需要你的帮助。
这是我测试过的
for f in $(ls -1);do ls -1 $f/ | head -1;done
但是文件夹名不见了。
当我指的是第一个文件时,是文件夹中按字母顺序返回的第一个文件。
谢谢。
【问题讨论】:
-
StackOverflow 是关于帮助人们修复他们现有的代码,任何代码,它不一定是完美的。你感觉使用
find,head,awk非常接近一个好主意。所以添加一些代码,人们会帮助你修复它。此外,当您显示所需的输出时,您对目录中的“第一个文件”使用的实际“规则”是什么?首先按名称排序,或在目录中创建的第一个文件(因为创建日期不保存在 Unix 文件系统中)。请使用该关键信息更新您的 Q。祝你好运。 -
另外,第一个文件到底是什么意思?
-
加上 uno 用于添加一些代码并让我们知道您对“第一个文件”的意思。祝你好运。
标签: bash unix awk command-line find