gpt4 book ai didi

linux - 移动与其包含的文件同名的文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:48 24 4
gpt4 key购买 nike

有人非常聪明(觉得讽刺?)在自己的目录中提取了 6000 多个文件,但有时文件中包含一个文件:与其包含的目录同名。

示例:

mydir(0001)/mydir(0001).txt
mydir(ZREZ)/mydir(ZREZ).txt
mydir(AAEZ)/mydir(AAREZ).txt
mydir(AAEZ)/otherfile.txt
mydir(QQQQ)/mydir(QQQQ).txt
...

是否有一种快速方法(Unix shell)来比较文件(如果只有一个文件)和它所在的目录,如果相同(没有扩展名),则将其移至上一个目录并删除(现在为空)目录?

所以我应该得到:

mydir(0001).txt
mydir(ZREZ).txt
mydir(AAEZ)/mydir(AAREZ).txt
mydir(AAEZ)/otherfile.txt
mydir(QQQQ).txt
...

最佳答案

您可以从所有这 6000 个目录/文件的父目录中使用这样的脚本:

while IFS= read -d '' -r d; do
n=$(find "$d" -maxdepth 1 -type f -exec echo . \; | wc -l)
f="${d}/${d}.txt"
[[ $n -eq 1 && -f "$f" ]] && mv "$f" "$d/../" && rmdir "$d"
done < <(find . -type d ! -name '.' -print0)

关于linux - 移动与其包含的文件同名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com