拆分相应文件夹中的文件

时间:2012-07-09 16:16:46

标签: unix file-io

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

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

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

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

在Bourne shell中:

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

bash中,您可以${}使用sed构建{<1}}:

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

答案 1 :(得分:0)

for file in *.txt; do
  newdir="${file%.txt}"
  mkdir -p "$newdir"
  mv "$file" "$newdir"
done

如果您想在“主目录”中保留pippo1.txt的副本,请使用cp代替mv。 E.g:

cp "$file" "$newdir"