Existe um comando de terminal para dividir uma pasta em duas?

8

Eu tenho uma pasta com 80.000 arquivos no meu iMac G5 executando o Ubuntu 12.04.1 e nem consigo abri-la com o Nautilus porque congela.

Eu posso fazer ls -ano Terminal e isso me mostra tudo.

Existe um comando de terminal que eu poderia usar para dividi-lo em dois diretórios de tamanho igual (em termos de número de arquivos), para que fosse mais fácil para o Nautilus abrir um deles? Ou talvez 4 pastas?

Zanna
fonte
2
Para abrir 80.000 arquivos, dividida em 4 pastas que ainda Nautilus acidente em um PowerPC Imac G5! ... você poderia tentar mkdir folder1e, em seguida, cp *.txt folder1copiar todos txtpara folder1e fazê-lo por extensões como cp *.jpg folder2 cp *.doc folder3 cp *.docx folder3. O Nautilus deve ter um trabalho mais fácil para visualizá-los.
blade19899
Esqueci de mencionar que todos os arquivos estão no formato .jpg.
selecione a pasta com shotwell e deixe Shotwell criar a pasta datas e tal
blade19899

Respostas:

10

ls -1 | sort -n | head -40000 | xargs -i mv "{}" /destination/folder/

Ajuste head -40000para atender às suas necessidades, também/destination/folder/

Frantique
fonte
1

Experimente este script abaixo, encontrei-o no Linuxquestions.org

PhotosPath="/media/4GBSD/DCIM/101CANON"
SortPath="/home/angus/.imagesort"
LibraryPath="/home/angus/Photos"
CameraPath="/media/4GBSD"

renomeie esse caminho para atender às suas necessidades

#!/bin/bash
#
#
PhotosPath="/media/4GBSD/DCIM/101CANON"
SortPath="/home/angus/.imagesort"
LibraryPath="/home/angus/Photos"
CameraPath="/media/4GBSD"
CharFromName=4
echo 
echo 
############
# Test to see if $PhotosPath exists, if not promp for new path / exit.
test -d $PhotosPath || read -p "$PhotosPath does not exist, close to exit or type new path:" PhotosPath
test -d $PhotosPath || "read -p '$PhotosPath is invalid. Press enter to close' && exit"

############
# move files from camera to $SortPath
mv $PhotosPath/* $SortPath/

############
# rename all image files in $SortPath
# FolderDateDD-HHMMSS.ext
jhead  -autorot -ft -nf%y%m%d-%H%M%S $SortPath/*

###########
# Sort files into folders using $CharFromName letters of the file name
#
ls $SortPath | while read file; do
 # extract first $CharFromName characters from filename
 FolderDate=${file:0:$CharFromName}
 # create directory if it does not exist
 test -d $LibraryPath/$FolderDate || mkdir $LibraryPath/$FolderDate
 # move the current file to the destination dir
 mv -v $SortPath/$file $LibraryPath/$FolderDate/$file
done

##########
# move sorted files into photo library
#mv -v $SortPath/* $LibraryPath/ 

##########
# Umount the card
umount $CameraPath

##########
# End notification
echo 
echo "Photos  from: $PhotosPath"
echo "End location: $LibraryPath"
echo 
echo "The card has been ejected."
echo 
read -p "Press enter to close this window…"
blade19899
fonte
1
Muito complicado, mas obrigado pelo aborrecimento. A solução de outros caras é muito mais fácil. As pessoas precisam seguir suas vidas, você sabe, e não desperdiçá-las na frente de um terminal. Tecnologia é suposto para ajudá-lo, não comer todo o seu tempo ...
@Sergiu nem para destruir o seu PC também! A outra solução é muito simples e eu não hesitaria em caracterizá-la como perigosa. Um loop for ou while faria perfeitamente aqui.
Htromo 18/09/2012