将文件夹中的文件复制到各个文件夹

将文件夹中的文件复制到各个文件夹

这可能听起来很奇怪,但对于我的 HTPC,我需要重新安排文件的存储方式,以便文件夹中的每个单独文件都需要移动到其自己的子目录(与文件同名) 。

IE - 当前目录是:

directory/
- a.file
- b.file
- c.file

我想将其更改为:

directory/
- a/
-- a.file
- b/
-- b.file
- c/
-- c.file

我不认为这非常棘手,但这很奇怪,而且我以前没有发现有人这样做过:我认为这可以通过 find 和 exec 来完成,但我是一个战斗者,不能完全理解它。

提前非常感谢您(或者只是感谢您花时间阅读本文)。

答案1

另一个解决方案:

#!/usr/bin/env bash

Dir="/tmp/directory/"

for f in "$Dir"/*;
do
    SubDir="${f%.*}"
    mkdir -- "$SubDir"
    mv -- "${f}" "$SubDir/"
done

答案2

编写一个 shell 脚本,将文件作为参数:

#!/bin/bash

for filepath; do
  parentpath="${filepath%/*}"
  if [ "$parentpath" != "$filepath" ]; then # $file contains a /
    file="${filepath#"$parentpath"/}"
  else
    file="$filepath"
    parentpath=""
  fi
  filename="${file%.*}"
  if [ -z "$parentpath" ]; then
    mkdir -p "$filename" && mv "$file" "$filename"
  else
    mkdir -p "${parentpath}/$filename" &&
      mv "$filepath" "${parentpath}/$filename"
  fi
done

./script *.ext1 *.ext2 *.ext3对于数量不太大或find ... -exec ./script {} +数量很大的文件,您可以调用此脚本。

相关内容