Ubuntu下通过Bash终端单命令迁移U盘数据至隐藏文件夹及格式化方法
在Ubuntu中用单条Bash命令迁移U盘数据到系统隐藏文件夹并格式化
首先,你得先确认U盘的挂载点和设备分区路径——这一步绝对不能马虎,搞错了可能会误格式化系统盘!
打开终端输入lsblk,你会看到类似这样的输出:
sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 237.5G 0 part / sdb 8:16 1 14.9G 0 disk └─sdb1 8:17 1 14.9G 0 part /media/nitin/MyUSB
这里的/media/nitin/MyUSB就是U盘的挂载点,/dev/sdb1是U盘的分区路径。接下来分两种场景给你对应的命令:
场景1:复制U盘所有数据到隐藏文件夹,然后格式化U盘
这条命令会先创建目标隐藏文件夹(如果不存在),完整复制U盘的所有内容(包括隐藏文件、权限、时间戳),卸载U盘后完成格式化:
mkdir -p ~/.system_hidden_data && sudo cp -a /media/your-username/USB_NAME/. ~/.system_hidden_data/ && sudo umount /media/your-username/USB_NAME && sudo mkfs.ext4 /dev/sdX1
命令拆解:
mkdir -p ~/.system_hidden_data:创建家目录下的隐藏文件夹(名字前加.就是隐藏属性),-p确保父目录不存在时自动创建sudo cp -a /media/your-username/USB_NAME/. ~/.system_hidden_data/:-a是归档模式,会保留文件权限、所有者和时间戳;/.能复制U盘根目录下的所有内容(包括隐藏文件)sudo umount /media/your-username/USB_NAME:必须先卸载U盘才能进行格式化操作sudo mkfs.ext4 /dev/sdX1:将U盘格式化为ext4格式,如果需要FAT32或NTFS,换成mkfs.vfat /dev/sdX1或mkfs.ntfs /dev/sdX1即可
场景2:直接移动(剪切)U盘数据到隐藏文件夹,然后格式化U盘
如果不需要保留U盘上的原数据,用mv代替cp更高效。这里用bash -c启用dotglob选项,让通配符*能匹配到隐藏文件:
mkdir -p ~/.system_hidden_data && sudo bash -c 'shopt -s dotglob; mv /media/your-username/USB_NAME/* ~/.system_hidden_data/' && sudo umount /media/your-username/USB_NAME && sudo mkfs.ext4 /dev/sdX1
重要提醒:
- 替换命令中的
your-username为你的Ubuntu用户名,USB_NAME为U盘的挂载名称,/dev/sdX1为你从lsblk查到的U盘分区 - 执行格式化前一定要再次确认分区路径,绝对不要把
/dev/sdX1写成系统盘的分区(比如/dev/sda1) - 如果不需要格式化U盘,只保留迁移数据的部分,去掉命令最后的
&& sudo umount ... && sudo mkfs.ext4 ...即可
内容的提问来源于stack exchange,提问作者Nitin




