linux - 如果父文件夹与 bash 同名,则移动子文件夹的内容

标签 linux bash tar

当执行 tar 提取操作时,有时内容会直接提取到父文件夹,这很糟糕,因为它们变得杂乱无章。例如:

tar -xzf foo1.tar.gz

摘录:

./file1
./file2
./file3

解决方案是为 tar.gz 创建一个特定的文件夹,例如:

tar -C foo -xzf foo1.tar.gz

摘录:

./foo1/file1
./foo1/file2
./foo1/file3

所以如果我有很多 .tar.gz 需要解压,我会这样做:

find -name \*.tar.gz | xargs -n 1 basename -s .tar.gz | xargs -I {} tar -C {} -xzf {}.tar.gz

为了安全地提取它们,但我最终会得到这样的结果:

./foo3/foo3/file1
./foo3/foo3/file2
./foo3/foo3/file3

对于那些需要它的情况,是否有一种自动的方法来使用 bash 删除重复的子文件夹?

最佳答案

计算目录中的条目数(提示:dotglob(*)${#var[@]}) , 如果单个目录条目具有相同的名称,则复制属性并移动内容(请注意,该目录中的某些内容可能具有相同的名称),然后删除 now-empty目录。

关于linux - 如果父文件夹与 bash 同名,则移动子文件夹的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107165/

相关文章:

c - 使用 select() 系统调用监听标准输入和服务器

bash - xmlstarlet -v 到 $variable

bash - 为什么 unix 后台进程有时会在我退出 shell 时死掉?

unix - 如何创建不会扩展到子文件夹的 tar 存档?

tar - 'tar --overwrite'实际做什么(或不做什么)?

r - 如何读取 .tar.xz 文件?

python - 从树莓派上传文件到谷歌驱动器

linux - R 在 Fedora 中安装在哪里?

regex - 使用带点的 sed 在字符串中删除行

bash - 如何使用sed计算文件中非空行的数量?