как переместить файлы и каталоги в родительскую папку в linux?

<p>в linux (ubuntu), как вы перемещаете все файлы и каталоги в родительский каталог?</p>

<pre>находить . -maxdepth 1 -exec mv {} .. \;</pre><p>это также переместит скрытые файлы.</p><p>вы получите сообщение:</p><pre>mv: не может двигаться `. ' to `../. ': устройство или ресурс занят</pre><p>когда он пытается переместить <code>.</code> (текущий каталог), но это не причинит никакого вреда.</p>

<p>я пришел сюда, потому что я новичок в этом вопросе. по какой-то причине вышесказанное не помогло мне. что я сделал, чтобы переместить все файлы из директории в родительскую директорию:</p><pre><code>cd to/the/dir mv * ../ </code></pre>

<p>введите это в оболочке:</p><pre><code>mv *.* .. </code></pre><p>это перемещает все файлы на один уровень вверх.</p><p>символ <code>*</code> является подстановочным знаком. поэтому <code>*.deb</code> переместит все файлы .deb, а <code>zeitgeist.*</code> переместит zeitgeist.avi и zeitgeist.srt на одну папку вверх, поскольку, конечно, <code>..</code> указывает на родительский каталог.</p><p>чтобы переместить все, включая папки и т.д., просто используйте <code>*</code> вместо <code>*.*</code></p>

<p>это не может быть проще, чем:</p><pre><code>mv * ../ </code></pre><p>чтобы также переместить скрытые файлы:</p><pre><code>mv /path/subfolder/{.,}* /path/ </code></pre><p><code>mv</code> - это команда для перемещения файлов, <code>*</code> означает все файлы и папки, а <code>../</code> - это путь к родительскому каталогу.</p>

<p>в bash вы можете использовать<strong> <a href="http://linux.die.net/man/1/bash">shopt</a> -s dotglob </strong>, чтобы * сопоставить все файлы и переместить их просто</p><pre><code>shopt -s dotglob; mv * .. </code></pre><p>это не лучшее решение, так как этот параметр является постоянным для оболочки, пока вы не измените его</p><pre><code>shopt -u dotglob </code></pre><p>но я думаю это приятно знать.</p>

<pre><code>find . -maxdepth 2 -type f -exec mv {} .. \; </code></pre><p>я использовал вариант выше, чтобы переместить все файлы из подпапок в родительский.</p><p>я собирал данные в папки по годам, но, обнаружив, используя метаданные, я мог хранить их в одной папке, что облегчало управление.</p><p>например.</p><pre><code>/data/2001/file\_1 /data/2002/file\_2 /data/2003/file\_3 </code></pre>

<p>метод, который не вызывает ошибок и работает каждый раз:</p><pre><code>ls -1a . | while read -r file do mv "./${file}" .. done 

find -type f|while read line; do mv $line ${line##*/}; done </code></pre>

<p>предполагая, что все ваши скрытые файлы начинаются с точки, за которой следует буква или цифра (что они должны), вы можете использовать</p><pre><code>mv * .[a-za-z0-9]* .. </code></pre><p>часть <code>.[a-za-z0-9]*</code> должна убедиться, что вы не пытаетесь переместить <code>.</code> или <code>..</code> вдоль, что может привести к сбою.</p>

<p>нет необходимости менять каталоги. просто включите * в конце пути:</p><pre><code>mv /my/folder/child/* /my/folder/ </code></pre><p>выше только перемещаются не скрытые файлы. для перемещения используйте только скрытые файлы. *</p><pre><code>mv /my/folder/child/.* /my/folder/ </code></pre><p>выше двух можно объединить в одну команду:</p><pre><code>mv /my/folder/child/{.,}* /my/folder/ </code></pre><p>также смотрите: <a href="https://stackoverflow.com/a/20192079/207661">как переместить все файлы, включая скрытые, в родительский каталог через *</a> </p>

<p>в linux просто переместить все файлы и папки в родительский каталог.</p><p>перейдите в эту папку и используйте эту команду:</p><pre><code>mv * /the full path </code></pre><p>например, если ваши файлы и папки выглядят следующим образом:</p><pre><code>/home/abcuser/test/1.txt 2.txt 3.jpg 4.php 1folder 2folder </code></pre><p>перейдите в эту папку через cd:</p><pre><code>cd /home/abcuser/test mv * /home/abcuser </code></pre><p>все ваши файлы и папки будут перемещены в папку abcuser (родительский каталог).</p>