Có một lệnh đầu cuối để chia một thư mục thành hai?


8

Tôi có một thư mục chứa 80.000 tệp trên iMac G5 chạy Ubuntu 12.04.1 và tôi thậm chí không thể mở nó bằng Nautilus vì nó bị đóng băng.

Tôi có thể làm ls -atrong Terminal và nó cho tôi thấy tất cả mọi thứ.

Có một lệnh đầu cuối mà tôi có thể sử dụng để phân chia nó thành hai thư mục có kích thước bằng nhau (về số lượng tệp) để Nautilus có thể mở một trong số chúng dễ dàng hơn không? Hoặc có thể 4 thư mục?


2
Để mở 80.000 tác phẩm, phân chia trong 4 thư mục sẽ vẫn nautilus vụ tai nạn trên powerpc iMac G5! ... bạn có thể thử mkdir folder1và sau đó cp *.txt folder1sao chép tất cả txtđể folder1và làm như vậy cho phần mở rộng như cp *.jpg folder2 cp *.doc folder3 cp *.docx folder3. Nautilus nên có một công việc dễ dàng hơn để xem chúng sau đó.
lưỡi19899

Quên đề cập đến tất cả các tệp có định dạng .jpg.

chọn thư mục với shotwell và để shotwell tạo ngày thư mục và như vậy
blade19899

Câu trả lời:


10

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

Điều chỉnh head -40000để phù hợp với nhu cầu của bạn, cũng/destination/folder/


1

Hãy thử kịch bản dưới đây tôi tìm thấy nó trên Linuxquestions.org

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

vui lòng đổi tên những con đường này để phù hợp với nhu cầu của bạn

#!/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…"

1
Cách quá phức tạp nhưng cảm ơn vì sự rắc rối. Các giải pháp khác dễ dàng hơn nhiều. Mọi người cần phải tiếp tục với cuộc sống mà bạn biết và không lãng phí nó trước Nhà ga. Công nghệ được cho là sẽ giúp bạn, không phải ăn hết thời gian của bạn ...

@Sergiu cũng không phá hủy máy tính của bạn! Giải pháp khác quá đơn giản và tôi sẽ không ngần ngại mô tả nó nguy hiểm. Một vòng lặp for hoặc while sẽ làm hoàn hảo ở đây.
hytromo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.