Есть ли терминальная команда для разделения папки на две части?

8

У меня есть папка с 80 000 файлов на моем iMac G5 под управлением Ubuntu 12.04.1, и я даже не могу открыть ее с помощью Nautilus, потому что она зависает.

Я могу сделать ls -aв терминале, и он показывает мне все.

Есть ли терминальная команда, которую я мог бы использовать, чтобы разделить ее на два одинаковых по размеру (по количеству файлов) каталога, чтобы наутилусу было легче открыть один из них? Или, может быть, 4 папки?

Занна
источник
2
Чтобы открыть 80.000 файлы, раскол в 4 папки будут по- прежнему аварии наутилус на PowerPC G5 имак! ... вы могли бы попробовать , mkdir folder1а затем cp *.txt folder1скопировать каждый txtв folder1и сделать это для расширения , например cp *.jpg folder2 cp *.doc folder3 cp *.docx folder3. У Наутилуса должна быть более легкая работа, чтобы просмотреть их.
blade19899
Забыл упомянуть, что все файлы в формате .jpg.
выберите папку с помощью Shotwell и позвольте ShoTwell создать даты в папках и т. д.
blade19899,

Ответы:

10

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

Настройте head -40000в соответствии с вашими потребностями, а также/destination/folder/

Frantique
источник
1

Попробуйте этот скрипт ниже, я нашел его на Linuxquestions.org

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

пожалуйста, переименуйте эти пути в соответствии с вашими потребностями

#!/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
источник
1
Слишком сложно, но спасибо за хлопоты. Решение для других ребят гораздо проще. Люди должны продолжать жить своей жизнью, а не тратить ее на Терминал. Технологии должны помогать вам, а не кушать все ваше время ...
@Sergiu ни уничтожить свой компьютер тоже! Другое решение слишком простое, и я бы без колебаний охарактеризовал его как опасное. Цикл for или while отлично подойдет здесь.
Hytromo