已经浏览了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
答案 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
重定向。