当执行 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/