我来这里是因为我也是新手。由于某些原因,上面的方法对我没有用。我所做的是将所有文件从一个dir移到它的父dir:
cd to/the/dir
mv * ../
```。
再简单不过了:
mv * ../
也要移动隐藏文件。
mv /path/subfolder/{.,}* /path/
mv
是移动文件的命令,*
表示所有文件和文件夹,../
是父目录的路径。
在bash中,你可以使用* shopt -s dotglob**来使*匹配所有文件,并简单地通过
shopt -s dotglob; mv * ..
来移动它们,这并不是最好的解决方案,因为在你通过
shopt -u dotglob
改变之前,这个设置对shell来说是永久的,但我认为这很好知道。
一个不会出错且每次都能成功的方法:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
```。
find . -maxdepth 2 -type f -exec mv {} .. \;
我用上面的方法把所有文件从子文件夹移到父文件夹。
我把数据按年份放在文件夹里,但发现通过使用元数据,我可以把它们都放在同一个文件夹里,这样更容易管理。
例如:
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
```。
不需要改变目录。只需在路径末尾加上 *。
mv /my/folder/child/* /my/folder/
以上只移动非隐藏文件。如果只移动隐藏文件,请使用.*
mv /my/folder/child/.* /my/folder/
以上两个命令可以合并为一个命令。
mv /my/folder/child/{.,}* /my/folder/
也可以参考 如何通过 * 移动所有文件包括隐藏文件到父目录 。