将多个文件移动到Linux中的子目录

将多个文件移动到Linux中的子目录

我有这样的目录结构;

dir
├── dirA
│   └── file1
│   └── subdir
└── dirB
    └── file2
    └── subdir

我需要将 file1 移动到 dirA/subdir,将 file2 移动到 dirB/subdir。我怎样才能在 Linux 中做到这一点?

答案1

dir可以mv dirA/file1 /dirA/subdir/并且mv dirB/file2 /dirB/subdir/您是否尝试在脚本中或使用单个命令来执行此操作?

杰森·C.

答案2

这对我有用,将各个存储库目录中的各种 .yml 文件移动到每个存储库目录中的“任务”子目录中:

for dir in */; do mv -- "$dir"*.yml "${dir}tasks/"; done

答案3

Gnu 查找

find dir -mindepth 2 -maxdepth 2 -type f -execdir sh -c 'mv -t ./*/ "$1"' find-sh {} \;

find dir \
  -mindepth 2 -maxdepth 2 -type f \
  -execdir sh -c '
        mv -t ./*/ "$1"
  ' find-sh {} \;

原始目录结构

dir
├── dirA/
│   ├── fileA
│   └── subdir/
│       ├── e
│       ├── q
│       └── w
└── dirB/
    ├── fileB
    └── subdir/
        ├── c
        ├── x
        └── z

移动操作后

dir
├── dirA/
│   └── subdir/
│       ├── e
│       ├── fileA
│       ├── q
│       └── w
└── dirB/
    └── subdir/
        ├── c
        ├── fileB
        ├── x
        └── z

答案4

在 shell 中执行以下命令:

mv file1 /dir/dirA
mv file2 /dir/dirB**

mv代表移动

mv "filename.txt" "location/where/you/want/file/to/go"

相关内容