所有文件的递归文件列表,包含路径+名称,类型,大小,创建数据,修改日期的列表

时间:2014-09-11 07:40:10

标签: macos unix terminal

已经浏览了stackoverflow,谷歌搜索...但没有什么符合我的要求...... :-)我想要/需要的是一个平坦的txt文件,其中包含某个目录和子目录中的文件信息。有方法可以使用第三方程序和终端/ unix执行此操作。我这两种方式都没问题。但是......我需要文件中的以下所有信息:

路径和文件名 输入(我们在这里谈论macintosh,所以它可能来自资源分支,许多非常古老的文件,回到90年代中期!)

作品尺寸

创建日期

修改日期(这不是必需的,只是有好处)。

有什么好主意吗?如上所述,它可能是终端的单行代码,可以写入文件或建议可以执行此操作的小应用程序。

提前致谢: - )

编辑:输出格式并不重要,可以是制表符或分号或其他任何东西,只要它是一个文本文件 - 我可以随后修改它。重要的是信息是......: - )

结果 - 我最终使用了(感谢您的帮助): - )

#!/bin/bash

find . -type f -name '*' -print0 | while IFS= read -r -d '' file
do
    name=$(basename "$file")
    path=$(dirname "$file")
    # full_path=$(readlink -f "$file") # This only works on Linux
    full_path=$(echo "$PWD/${file#./}")
    extension=${name##*.}
    size_human_readable=$(ls -lh "$file" | awk -F' ' '{print $5}')
    size_in_bytes=$(stat -f "%z" "$file")
    creation_date=$(stat -f "%SB" "$file")
    last_access=$(stat -f "%Sa" "$file")
    last_modification=$(stat -f "%Sm" "$file")
    last_change=$(stat -f "%Sc" "$file")
    creator=$(mdls -name kMDItemFSCreatorCode "$file")


    printf "\"%q\";" "$name"
    printf "\"%q\";" "$full_path"
    printf "%s" "\"$extension\";"
    printf "\"$size_human_readable\";"
    printf "\"$size_in_bytes\";"
    printf "\"$last_modification\";"
    printf "%s" "\"$creator\""
    printf "\n"
done

1 个答案:

答案 0 :(得分:3)

也许是这样的:

#!/bin/bash

find . -type f -name '*' -print0 | while IFS= read -r -d '' file
do
    name=$(basename "$file")
    path=$(dirname "$file")
    # full_path=$(readlink -f "$file") # This only works on Linux
    full_path=$(echo "$PWD/${file#./}")
    extension=${name##*.}
    size_human_readable=$(ls -lh "$file" | awk -F' ' '{print $5}')
    size_in_bytes=$(stat -f "%z" "$file")
    creation_date=$(stat -f "%SB" "$file")
    last_access=$(stat -f "%Sa" "$file")
    last_modification=$(stat -f "%Sm" "$file")
    last_change=$(stat -f "%Sc" "$file")

    printf "[$file]:\n"
    printf "\tfile name:\t\t$name\n"
    printf "\tfile path:\t\t$path\n"
    printf "\tfull file path:\t\t$full_path\n"
    printf "\tfile extension:\t\t$extension\n"
    printf "\tfile size:\t\t$size_human_readable\n"
    printf "\tfile size in bytes:\t$size_in_bytes\n"
    printf "\tfile creation date:\t$creation_date\n"
    printf "\tlast file access:\t$last_access\n"
    printf "\tlast file modification:\t$last_modification\n"
    printf "\tlast file change:\t$last_change\n"
    printf "\n"
done

当然你可以修改输出!将此脚本复制到文件中(例如recursive_file_info.sh)。然后使用chmod +x recursive_file_info.sh使其可执行。如果您希望输出文本文件,可以使用./recursive_file_info.sh > files.txt重定向。