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

Bourneシェルの場合:

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

であなたは以下の構造bashを使用することができます:${}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 に答える