0

我在名为“test”的主文件夹中有一个文件列表,例如(pippo1.txt、pippo2.txt、pippo3.txt、ecc)。

我想创建多个与文件数量相同且名称相同的文件夹。例如,如果我有一个名为 pippo1.txt 的文件,我想创建一个名为 pippo1 的文件夹,然后我想将 .txt 文件分别复制到名为 pippo1、pippo2、pippo3 的文件夹中,以便 pippo1.txt 保留在文件夹 pippo1、pippo2.txt 将保留在文件夹 pippo2 ecc 中。

我有 14469 个 files.txt 分配在 14469 个文件夹中。

如何才能做到这一点?

4

2 回答 2

1

在伯恩壳:

for i in *.txt
do 
  dir=$(echo $i | sed 's/.txt$//')
  mkdir "$dir"
  cp "$i" "$dir"
done

bash你可以使用insted${}的构造sed

for i in *.txt
do 
  dir=${i%.txt}
  mkdir "$dir"
  cp "$i" "$dir"
done

如果要移动文件而不是复制它,只需使用mv而不是cp.

当您认为您的列表对于命令行来说太大(但在您的情况下似乎不太大)时,您可以使用while...read代替for

find . -maxdepth 1 -name '*.txt' | while read i
do 
  dir=${i%.txt}
  mkdir "$dir"
  cp "$i" "$dir"
done
于 2012-07-09T16:21:51.817 回答
0
for file in *.txt; do
  newdir="${file%.txt}"
  mkdir -p "$newdir"
  mv "$file" "$newdir"
done

如果您想pippo1.txt在“主目录”中保留一份副本,请cp使用mv. 例如:

cp "$file" "$newdir"
于 2012-07-09T16:21:36.017 回答