- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给出了以目录名称开头的子树中按时间顺序(例如,按修改日期)计算和显示目录列表的 Shell 程序预期的表单输出结果:
directory <directory name>--| <--initial directory
catalog <name>--------------|
----------------------------| <--directories in the current directory
catalog <name>--------------|
directory <directory name>--| <--sub-directory
catalog <name>--------------|
----------------------------| <--directories in the current directory
catalog <name>--------------|
----------------------------
and etc.
这是我找到的递归列出目录和子目录以及修改日期的脚本。但是如何按照时间顺序和嵌套层次进行排序呢?
#!/bin/bash
#script to recursively travel a dir of n levels
function traverse() {
for folderin $(ls "$1")
do
if [[ ! -f ${1}/${folder} ]]; then
stat="$(date -r ${1}/${folder} +"%F %T")"
echo "${1}/${folder} ${stat}"
traverse "${1}/${folder}"
fi
done
}
function main() {
traverse "$1"
}
main "$1"
非常感谢。祝你有美好的一天。
附言类似这样的输出格式 - 按嵌套级别和时间顺序分隔:
1 level:
/dir1/
/dir2/
/dir2/
2 level:
/dir1/dir1/
/dir1/dir2/
/dir1/dir3/
/dir2/dir1/
/dir2/dir2/
/dir2/dir3/
/dir3/dir1/
/dir3/dir2/
/dir3/dir3/
3 level:
/dir1/dir1/dir1/
/dir1/dir1/dir2/
/dir1/dir1/dir3/
/dir1/dir2/dir1/
/dir1/dir2/dir2/
/dir1/dir2/dir3/
/dir1/dir3/dir1/
/dir1/dir3/dir2/
/dir1/dir3/dir3/
etc.
或
1 level:
/dir1/
/dir2/
/dir2/
2 level:
/dir1/dir1/
/dir1/dir2/
/dir1/dir3/
3 level:
/dir1/dir1/dir1/
/dir1/dir1/dir2/
/dir1/dir1/dir3/
2 level:
/dir2/dir1/
/dir2/dir2/
/dir2/dir3/
3 level:
/dir1/dir2/dir1/
/dir1/dir2/dir2/
/dir1/dir2/dir3/
2 level:
/dir3/dir1/
/dir3/dir2/
/dir3/dir3/
3 level:
/dir1/dir3/dir1/
/dir1/dir3/dir2/
/dir1/dir3/dir3/
etc.
不太重要,只是不要像那样混合嵌套级别:
/dir1/
/dir1/dir1/
/dir1/dir1/dir1/
/dir2/
/dir1/dir2/
/dir1/dir1/dir1/
/dir3/
/dir3/dir1/
/dir1/dir3/dir1/
最佳答案
您可以尝试使用 find
命令或 tree -d -t -f
这是我创建的临时结构(ls -R = 递归列表)
~/temp$ ls -R
.:
dir1/ dir2/ dir3/ file1
./dir1:
catalog1
./dir2:
./dir3:
现在您可以尝试使用 find
命令,如下所示:
找到 . -type d -exec ls -dlrt {}\;
获取列表
或者找到。 -type d -exec ls -dlrt {}\; | wc --lines
获取计数
编辑 1:要仅获取顶级目录,您可以添加 -maxdepth
并迭代地为其提供深度值,例如
找到 . -maxdepth 1 -type d -exec ls -dlrt {}\;
获取列表
或者找到。 -maxdepth 1 -type d -exec ls -dlrt {}\; | wc --lines
获取计数
-------------------------------------------- ---忽略以上内容-------------------------------------------- ------
编辑 2:
我明白了,现在我明白了你的问题..我制作了一个 bash 脚本来完成你的任务..你需要
find
命令下面是我制作的~/temp目录结构
$ ls -R temp
temp:
dir1/ dir2/ dir3/ file1
temp/dir1:
dir3/ dir4/
temp/dir1/dir3:
temp/dir1/dir4:
temp/dir2:
dir/ dir4/ dir5/ dir6/
temp/dir2/dir:
newdir/
temp/dir2/dir/newdir:
temp/dir2/dir4:
temp/dir2/dir5:
temp/dir2/dir6:
temp/dir3:
好吧,这里是 bash 脚本 .. 如果您认为评论/调试 echo 太多,请删除它们。我试图解释脚本本身的逻辑(使用注释)。
#!/bin/bash
declare front_element="./temp"
#dir to start with
declare -a q=($(find "$front_element" -maxdepth 1 -type d -not -path "$front_element" -printf '%T@ %p\n' | sort | awk '{print $2}'))
#initial queue population
declare -a temp_arr
if [[ ${#q[@]} -eq 0 ]]; then
printf "%s%s contains %d child directories(last modified time sort): \n" "----->" "$front_element" "${#q[@]}"
else
printf "%s%s contains the following %d child directories(last modified time sort): \n" "----->" "$front_element" "${#q[@]}"
fi
printf "\t%s\n" "${q[@]}"
while [[ ${#q[@]} -ne 0 ]]
do
front_element="${q[0]}"
#Queue fetching front element
#echo "$front_element is front_element"
q=("${q[@]:1}")
#actual queue dequeue operation=>reduction in size
temp_arr=($(find "$front_element" -maxdepth 1 -type d -not -path "$front_element" -printf '%T@ %p\n' | sort | awk '{print $2}'))
#excluding self during find using -not -path self, %Tk=last modified time printed in k format(here used @=>time in seconds since UTC/Unix Epoch Jan 1, 1970 midnight along with fractional part), %p=found path, sort=>uses last modified time to sort and it sorts alphabetically if same last modified time for >=2 directories(highly unlikely as it has fractional part too)
if [[ ${#temp_arr[@]} -eq 0 ]]; then
printf "%s%s contains %d child directories. \n" "----->" "$front_element" "${#temp_arr[@]}"
else
printf "%s%s contains the following %d child directories(last modified time sorted): \n" "----->" "$front_element" "${#temp_arr[@]}"
fi
#displaying the count as well
if [[ ${#temp_arr[@]} -gt 0 ]]
then
printf "\t%s\n" "${temp_arr[@]}"
echo
for element in "${temp_arr[@]}"
do
q+=("$element")
done
fi
#appending newly found stuff to the current queue for further processing
#echo "${q[@]} is q at end of iteration"
#echo "${temp_arr[@]} is temp_arr at end of iteration"
done
这是上述 bash 脚本的输出(在根目录上方的目录中运行)
对我来说,我的 $PWD/current_dir 是 ~ 即 $HOME 因为 我的临时目录在这里,即临时目录的父目录是 $HOME
PS:它没有经过全面测试。
这是您在问题编辑后在第一个结构中提到的输出方式。
$ ./script.bash
----->./temp contains the following 3 child directories(last modified time sort):
./temp/dir3
./temp/dir1
./temp/dir2
----->./temp/dir3 contains 0 child directories.
----->./temp/dir1 contains the following 2 child directories(last modified time sorted):
./temp/dir1/dir3
./temp/dir1/dir4
----->./temp/dir2 contains the following 4 child directories(last modified time sorted):
./temp/dir2/dir4
./temp/dir2/dir5
./temp/dir2/dir6
./temp/dir2/dir
----->./temp/dir1/dir3 contains 0 child directories.
----->./temp/dir1/dir4 contains 0 child directories.
----->./temp/dir2/dir4 contains 0 child directories.
----->./temp/dir2/dir5 contains 0 child directories.
----->./temp/dir2/dir6 contains 0 child directories.
----->./temp/dir2/dir contains the following 1 child directories(last modified time sorted):
./temp/dir2/dir/newdir
----->./temp/dir2/dir/newdir contains 0 child directories.
PPS:我硬编码了根目录'./temp',你需要将它更改为你的根目录
关于linux - Bash shell - 按时间顺序统计并显示目录和子目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434294/
有没有办法为我的一些文件创建一个子目录?这纯粹是为了文件组织。我有大量的小结构/方法,我想将它们放入它们自己的文件和子目录中,但我不想将它们放入它们自己的包中。他们依赖于我项目中的其他功能。每一个都在
我想将目录中的文件和文件夹复制到另一个文件夹中,但不包含包含该文件的子文件夹,例如,对于node_modules目录,我有大量文件,例如100Mb和50K +个文件,不需要复制。 我试过这样使用xco
嘿,我想安装一个论坛(xenforo),我已经得到了所有的 .php 文件,我把文件夹放在/usr/share/nginx/html 页面在哪里(主页 index.html),但是当我做 127.0.
我想在我的 Symfony2 应用程序的子目录中隔离一些 Controller 。 像这样的东西: route: resource: "@MyBundle/Controller/Admin/"
我们有一个由离岸外包开发公司开发的旧应用程序,它仍在使用 Azure 存储客户端 1.7。 因此,我会在此版本停止工作之前对其进行更新。 有一个单元测试我无法通过。 [TestMethod()
我已将 WordPress 安装在子目录中: /public_html/blog/ 我希望能够像这样访问博客: http://example.com/blog 以及类似这样的帖子: http://ex
我正在尝试制作一个程序来将特定文件夹中的文件以及主文件夹的子文件夹中的文件备份到另一个备份文件夹。 这是我试图实现目标的代码的一部分,但是我只备份了主文件夹中的文件,而子文件夹正在被完全复制(其中的所
我无法在 NSTemporaryDirectory 子文件夹中存储任何文件 rootDirectoryName 是 GUIDsubDirectoryName 也是一个 GUID self.rootFo
我最近正在制作一些 Java 软件来查找文件夹中的一些文件/目录,如果它们的名称包含某些文本,它们将被重命名为其他名称。我使用 Files.walkFileTree 遍历目录,如果找到一个匹配的文件/
我一直在互联网深处搜索,试图让 HAProxy 正常运行,但我不确定它能否完成我想要的。 我试着按照这个:https://www.haproxy.com/blog/howto-write-apache
我正在尝试查找其中包含最多文件的目录。我知道我可以使用以下方法找到文件数: find -maxdepth 5 -type f | wc -l 但这只有在我知道要检查哪个目录时才有用。我想找到包含最多文
我正在尝试按如下方式组织我的项目目录 外壳 |inc/[头文件] |obj/[目标文件] |src/[源文件] |生成文件 |可执行 根文件夹中的所有内容都可以正常编译,但我在修改我的 makefil
当我在谷歌上搜索 yahoo、godaddy 等时,它们会显示子目录,如附图所示。但是当我在谷歌上找到我的网站时,它并没有显示那种东西。问题是什么? 最佳答案 有机 SERP 部分的 Google 附
我有一个名为“myproject”的项目,它由 git 进行版本控制。它有一个名为“data”的子目录,该目录已被 gitignored。 我可以为数据目录“git init”并将其作为单独的 git
我有一个目录位置,如何创建所有目录?例如C:\Match\Upload 将同时创建 Match 和子目录 Upload(如果不存在)。 使用 C# 3.0 谢谢 最佳答案 Directory.Crea
如何在 C++ 中删除包含所有文件/子目录的文件夹(递归删除)? 最佳答案 说真的: system("rm -rf /path/to/directory") 也许更多您正在寻找的东西,但特定于 uni
在我正在处理的当前项目中,有人决定将二进制文件作为源树的一部分 checkin 。二进制文件位于源代码下方的目录中: project/src # Here is the loc
我最近知道了 meteor 私有(private)子目录。根据文档:“私有(private)子目录是服务器代码可以访问但不提供给客户端的任何文件的位置,例如私有(private)数据文件。”一般来说,
我的存储库中有多个项目(子目录)。所有项目都只有一个名为main.cpp的可执行文件,并且它们都使用common语句中的#include文件夹中的库。文件夹结构如下所示: root | ├────co
如何在 C# 中搜索这样的路径: "C:\MyApp\*\日志" 我想获取与该搜索模式匹配的所有目录。 示例结果: C:\MyApp\20171009\日志 C:\MyApp\20171008\日志
我是一名优秀的程序员,十分优秀!