gpt4 book ai didi

bash - 如何到 "squeeze"目录级别

转载 作者:行者123 更新时间:2023-12-04 01:31:22 24 4
gpt4 key购买 nike

我有许多 ID 的数据文件隐藏在深层目录结构中,例如:

ID1/a/b/c/data1
ID1/d/e/data2
ID1/f/g/h/i/data3

ID2/j/data1
ID2/k/l/m/data2

ID3/m/n/data1
ID3/o/data2
ID3/p/q/r/s/t/u/data3
ID3/v/w/data4
ID3/x/y/z/data5
...

有没有一种方便的方法来“压缩”这些目录,以便将数据文件直接放在每个 ID 下?喜欢:

> ls ID1
data1 data2 data3

> ls ID2
data1 data2

> ls ID3
data1 data2 data3 data4 data5

最佳答案

您可以使用类似于此的模式:

find ID1/*/ -type f -exec mv -t ID1 {} +

ID1/*/ — 查看ID1

的所有目录

-type f — 只查找文件

-exec mv -t ID1 — 在找到的文件上调用 mv 并将它们移动到 ID1 目录

{} +find 在调用 mv

时会将这些参数替换为文件名

在循环中覆盖所有目录:

for dir in ID*/ ; do
find $dir/*/ -type f -exec mv -t $dir {} +
done

注意:目录名中的空格需要不同的解决方案。

关于bash - 如何到 "squeeze"目录级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60963622/

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