gpt4 book ai didi

linux - 使用 bash 将子目录扁平化并在文件名前加上目录名

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

这个有效:

ls -SF data/*/*/* | xargs -I % cp % migrations/db.tmp/

但我希望在文件名前加上目录名"例如

data/folder1/subfolder1/file1.js -> data/folder1-subfolder1-file1.js

我尝试的下一步是:(但无法让它工作)

 ls -SF migrations/db/*/*/* | xargs -I % cp % migrations/db.tmp/$(basename %)-% 

有什么想法吗?

最佳答案

不要使用 ls,尤其是 -F 选项:

cd data
for f in */*/*; do cp "$f" "${f//\//-}"; done

这是一个更棘手的方法

cd data
printf "%s\n" */*/* | sed 'h; s,/,-,g; x; G; s/\n/ /; s/^/cp /'

这将输出一堆 cp 命令。管道进入 | sh 来执行它们。

关于linux - 使用 bash 将子目录扁平化并在文件名前加上目录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473466/

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