从路径中删除子目录并将文件提升为父目录

从路径中删除子目录并将文件提升为父目录

我有一堆文件,它们的路径中包含一个重复的文件夹(在以下示例中bar)。我想删除此目录并将包含的所有内容移至父目录中。以搜索和替换为例,我想在路径中用/foo/替换。/

初始状态:

foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt

目标:

foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt

我倾向于使用 bash 来解决这个问题,但也愿意接受任何没有任何依赖关系并且可以在 Linux 上运行的解决方案。


如果这对偶然发现此帖子的人有帮助,那么Windows 的现有答案使用 robocopy。

答案1

我最终像这样解决了它:

for iteration_path in ${1}/*; do
  if [[ ! -z $iteration_path ]]; then
    mv "${iteration_path}"/bar/* "${iteration_path}";
    rmdir "${iteration_path}"/bar;
  fi
done

如果有人能进一步阐述 AFH 的建议参数扩展,如果这是一个更优雅的解决方案,我会感兴趣。

相关内容