Điểm:0

Linux | Chỉ sao chép 100 tệp mới hàng đầu trong thư mục và các thư mục lồng nhau

lá cờ us

Tôi có bộ lưu trữ giống như bên dưới trên AzureVM/Ubuntu

-/MỘT
   -/B --> 10000 tệp nhật ký
   -/C --> 100000 tệp nhật ký 
      -/D --> 200000 hình ảnh 
   tóm tắt.xml
   -/data --> 1000 tệp csv

Bây giờ vì kích thước dữ liệu rất lớn để tính toán và thực hiện bất kỳ thao tác nào ở đó nên tôi muốn lấy một mẫu dữ liệu này để phát triển mã phân tích dữ liệu của mình.

Tôi muốn sao chép một tập hợp con sang một vị trí khác có 100 tệp mới nhất trong mỗi thư mục và thư mục lồng nhau và tất cả các tệp trên thư mục gốc giống như thế này.

-/New_Location
   -/B --> 100 tệp nhật ký
   -/C --> 100 tệp nhật ký 
       -/D --> 100 hình ảnh 
   tóm tắt.xml
   -/data --> 100 tệp csv

Tôi đã thử nhiều lệnh dựa trên cp nhưng không có gì hiệu quả với tôi và mất quá nhiều thời gian để thực hiện.

Ai đó có thể vui lòng giúp tôi ở đây?

David avatar
lá cờ cn
Lệnh gì? Hãy xem chính xác những gì bạn đã thử. Làm thế nào bất cứ ai có thể giúp bạn nếu bạn không cung cấp thông tin.
Bamboocoder avatar
lá cờ us
một trong những điều tôi đã thử, đi tới từng thư mục và sau đó chạy lệnh này cp -R -- *([1,100]) ../New, nhưng nó không sao chép tất cả dữ liệu thư mục lồng nhau, tôi cũng có quá nhiều thao tác thủ công vì tôi có hàng nghìn của các thư mục trong một
David avatar
lá cờ cn
Thông tin bổ sung trong câu hỏi xin vui lòng không phải là một bình luận. Bạn nói một trong những điều còn lại là gì?
Điểm:0
lá cờ cn

Điều này có thể dễ dàng được thực hiện bằng cách lưu trữ có chọn lọc. Bạn có thể tarball các tệp (chỉ những tệp dự định) và sau đó giải nén tarball ở một nơi khác. Tôi giả định rằng các tệp nhật ký của bạn có cùng tên ngoại trừ việc đánh số (ví dụ: log1, log2, v.v.). Vì vậy, hàng trăm tệp đầu tiên có thể được xác định trong lệnh tarball dưới dạng nhật ký{1..100}. Ví dụ:

tar -cvf đã sao chép.tar <path1>/log{1..100} <path2>/log({1..100} vân vân

Khi bạn giải nén, cấu trúc tệp gốc sẽ được tạo lại ở vị trí mới. Vì vậy, bạn có thể cần sử dụng tùy chọn "--strip-components=" để cắt bớt các thư mục chính dư thừa nhằm tránh lộn xộn.

Điểm:0
lá cờ cn

Thông thường, bạn có thể chia việc này thành ba nhiệm vụ, trong đó bạn bắt đầu với cấu trúc thư mục và tiếp theo, như trong trường hợp của bạn, giới hạn các tệp ở mức 100. Phần cuối cùng đảo ngược trận đấu để mở rộng phạm vi phần còn lại của các tập tin.

#!/bin/bash  
  
# Ví dụ BẮT ĐẦU  
[[ ! -d A/ ]] && { \  
mkdir -p \  
A/{tmp/thư mục,\  
{A..Z}}/{hình ảnh, dữ liệu} && \  
printf %s\0 \  
A/{summary.xml,\  
tmp/De5Loh4X.tmp,\  
{A..Z}/{{1..1000}_file.log,\  
hình ảnh/{1..1000}_pic.{jpg,png},\  
dữ liệu/example.csv}} | xargs -0 chạm; }  
### Ví dụ KẾT THÚC  
  
đặt -o noglob  
  
nguồn=A  
mục tiêu=mục tiêu  
số = 100  
# tỉa = "-false"  
prune="-type d -path $source/tmp -prune"  
match='-tên *.log -o -tên *.jpg -o -tên *.png'  
  
echo Tạo cấu trúc thư mục.  
tìm "$source" \  
\( $prune -o -type d -links 2 \) -printf %P\0 | cpio -0 -pvdm -D "$source" "$target"  
  
  
echo Sao chép 100 tập tin.  
trong khi IFS= read -rd ''; làm  
tìm "$REPLY" \  
-maxdepth 1 -type f \( $match \) -printf '%T@\t%P\0' | sắp xếp -zk1rn | cắt -zf2- | đầu -zn số $ | cpio -0 -pvdm -D "$REPLY" "$target/${REPLY/#$source\//}"  
xong < <( \  
tìm "$source" \  
\( $prune -false -o -type f \) -printf %h\0 | sắp xếp -zu \  
)  
  
echo Sao chép mọi thứ khác.  
tìm "$source" \  
\( $prune -false -o -type f ! \( $match \) \) -printf %P\0 | cpio -0 -pvdm -D "$source" "$target"
bac0n avatar
lá cờ cn
`-name *` sẽ giới hạn tất cả các loại tệp ở 100

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.