我有以下bash
搜索特定目录并返回该目录中最早的文件夹。 bash
如果每个文件夹中没有子文件夹,则效果很好。如果有返回而不是主文件夹。我不确定为什么会发生这种情况或如何解决它。谢谢你:)。
例如,
/home/cmccabe/Desktop/NGS/test
是搜索到的目录,其中有两个文件夹R_1 and R_2
输出
The earliest folder is: R_1
但是,如果/ home / cmccabe / Desktop / NGS / test has
R_1及其中的testfolder and
R_2和testfolder2在其中
输出
The earliest folder is: testfolder
击
cd /home/cmccabe/Desktop/NGS/test
folder=$(ls -u *"R_"* | head -n 1) # earliest folder
echo "The earliest folder is: $folder"
答案 0 :(得分:1)
你应该阅读关于ls的信息,-u选项不会做你认为它做的事情。以下是相关选项:
所以你真正需要的是:
$ ls -trd
或者:
$ ls -utrd
答案 1 :(得分:1)
ls
是这项工作的错误工具:它的输出是为人而不是脚本构建的,并且在存在非打印字符时通常会令人惊讶。
假设你有GNU find
和sort
,以下内容适用于所有可能的文件名,包括带有文字换行符的文件名:
dir=/home/cmccabe/Desktop/NGS/test # for my testing, it's "."
{
read -r -d $'\t' time && read -r -d '' filename
} < <(find "$dir" -maxdepth 1 -mindepth 1 -printf '%T+\t%P\0' | sort -z -r )
...此后:
echo "The oldest file is $filename, with an mtime of $time"
有关可移植地查找目录中最新或最旧文件的更大讨论,包括不需要GNU工具的选项,请参阅BashFAQ #99。