फ़ाइलें ले जाएँ और स्वामित्व में परिवर्तन करें


23

लिनक्स (डेबियन, उबंटू मिंट ...) पर,
क्या कोई विकल्प कमांड या ऐसा कुछ है जिसका उपयोग मैं बिना किसी अन्य उपयोगकर्ता के लिए फाइल स्थानांतरित करने के लिए कर सकता हूं:

sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles

जवाबों:


30

उपयोग करें rsync(1):

rsync \
  --remove-source-files \
  --chown=unicorn:unicorn \
    /home/poney/folderfulloffiles /home/unicorn/

4
धन्यवाद @ दाउद - यह मेरा दैनिक "सामान है जिसे मैं नहीं जानता था और समझ नहीं पा रहा था कि मैं कैसे चूक गया"
जेनी डी

1
@ जेनीडी आप usermapऔर groupmapसाथ ही विकल्पों पर एक नज़र रखना चाहते हो सकता है ।
दाऊद

2
लेकिन यह नहीं mvहै, है ना? केवल प्रतियां? या करता mvहै?
मोकेसर

@mikeserv ने विधिवत उल्लेख किया, मेरा संपादन देखें
dawud

11

नीचे दी गई टिप्पणियों में @ केविन, --file - |pipeवाक्य रचना बेमानी है। इसलिए मैंने इसे हटा दिया है।

इसके साथ भी किया जा सकता है tar:

sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* | 
    sudo tar -C${TGT_DIR} -pvx

बहुत यकीन है कि -f -दोनों सिरों पर निहित है।
केविन

1
@ केविन यहाँ नहीं। यहाँ यह निर्दिष्ट है।
मोइस्कर्व

हां, आपने इसे निर्दिष्ट किया है, लेकिन यह आवश्यक नहीं है। आपकी कमांड बिना f -भाग के ठीक काम करती है ।
केविन

8
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/ 
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f

अन्य उत्तर के समान लंबाई के बारे में, और ध्यान दें कि वे सभी हुड के नीचे एक ही पुस्तकालय कॉल का उपयोग कर रहे हैं, वे सभी बिल्कुल एक ही काम कर रहे हैं - जब तक कि गाइल्स नोट के रूप में, यह एक ही फाइल सिस्टम और डिवाइस पर है , जिस मामले mvमें वास्तव में एक नाम है, जो इसे rsyncया उससे अधिक कुशल बनाता है tar


यह जब :एक .से निपटने के बजाय नहीं है chown?
कीवी

2
हम्म - दिलचस्प। यह मैन पेज में इस तरह से है, लेकिन मैंने हमेशा एक डॉट का उपयोग किया है। ऐसा लगता है कि उन्होंने इसे करीब एक दशक पहले जीएनयू मैन पेज से बाहर निकाल लिया था क्योंकि यह पॉसिक्स पोर्टेबल नहीं है। हालांकि अभी भी काम करता है (linux पर GNU कोरुटिल से चाउन), लेकिन मैं इसे ऊपर बदल दूँगा।
गोल्डीलॉक्स

1
chownआम तौर पर दोनों लेता है :और .
स्लम

1
आप इसे थोड़ा कम कर सकते हैं: nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- हालांकि यह शायद ही आपके उत्तर का बिंदु है, जो अच्छा है और मैं पहले ही उत्थान कर चुका हूं।
mikeserv

3
इस समाधान का यह लाभ है कि यदि स्रोत और गंतव्य एक ही फाइल सिस्टम पर हैं, तो फ़ाइल को कॉपी करने के बजाय स्थानांतरित किया जाता है और मूल मिटा दिया जाता है।
गाइल्स का SO- बुराई का होना बंद '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.