我有一个包含许多文件的目录,例如服务器上的 50,000 个 pdf 和其他文件。我需要将特定的移动到另一个目录。我可以生成需要以 csv 或任何其他文本格式移动的文件列表。
我需要做的是运行 bash 脚本并将文本文件中列出的文件移动或复制到另一个目录。
有没有简单的方法来做到这一点?任何建议或资源将不胜感激。
我需要将大量图像组合到一个目录中。其中许多图像具有相同的文件名。
mv
如果目标文件名已经存在,是否有一些安全版本会自动重命名文件,以便pic1.jpeg
变成类似的东西pic1_2.jpeg
?
我可以编写自己的 python 脚本,但必须有这样的东西,所以我可以这样做:
find . -type f -name *.jpg -exec mvsafe '{}' /targetpath/ \;
Run Code Online (Sandbox Code Playgroud) 在 Linux 中,我有时会像这样重命名文件:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old
Run Code Online (Sandbox Code Playgroud)
请注意,我只想重命名文件,而不是将其移动到另一个目录。
是否有一个命令可以让我执行该命令的速记版本?我在想这样的事情:
mv dir1/dir2/dir3/file.txt file.txt.old
Run Code Online (Sandbox Code Playgroud)
或者甚至是类似的东西(只是附加到名称):
mv dir1/dir2/dir3/file.txt {}.old
Run Code Online (Sandbox Code Playgroud)
我的目标是不必再次指定完整路径。
我知道我写的那些“例子”不起作用,但这只是我想要完成的一个想法。
我不想进入目录。
我目前正在 RAIDZ1 卷中“重新组织”文件结构。将目录从一个数据集移动到另一个数据集,它们都包含在同一卷中。
SSH 进入机器并做了一个很好的老式:
mv * 目的地
这不应该是瞬间的吗?我知道它分布在三个驱动器上,但同时,文件本身并不真正需要移动 - 我只是希望它调整这些文件的指针,并且基本上是瞬时的。绝对不是。我有大约 500G 的数据要移动,它现在已经运行了大约半小时。oO
为什么不是近乎即时?
规格: CPU:Intel G3220
MB:Gigabyte GA-B85-HD3
MEM:Kingston DDR3-1600 8GB
磁盘:RAIDZ1 卷中的 3x2TB WD Green
这是一个有点尴尬的问题,但我不得不承认,在我职业生涯的后期,我仍然对 mv 命令有疑问。
我经常遇到这个问题:我需要将所有文件递归地向上移动一层。假设我有文件夹 foo,里面有一个文件夹 bar。Bar 有一堆文件和文件夹,包括点文件和文件夹。如何将 bar 中的所有内容移动到 foo 级别?
如果 foo 为空,我只需将 bar 移到上一层,删除 foo 并将 bar 重命名为 foo。部分问题是我无法弄清楚“包括点在内的一切”的 mv 通配符是什么。这个问题的一部分是 - 是否有对 cp 和 mv 命令在某处使用的通配符的深入讨论(谷歌搜索这只会带来非常基本的教程)。
我的理解是那mv dir1/file1 dir2/
是原子的,
是否mv dir1/* dir2/
还原子?
例如,假设有 10 个文件,dir1
每个文件10GB。
运行Linux。我在同一台机器上安装了两个相同的驱动器。什么是更快的 CP、MV 或 RSYNC?为什么一个比另一个快?有没有更快的替代品?
我试图将一个目录中的所有文件移动到另一个目录,如下所示:
$ mv /directory_one/* /directory
Run Code Online (Sandbox Code Playgroud)
但是,不会移动 /directory_one 中的隐藏文件(例如 .htaccess)。
这样做的正确命令是什么?
我在 /home/ 中有大约 200 个目录。问题是它们都以这种方式存在:
/home/{用户}/homedir/
虽然它应该只是:
/home/{用户}/
使用什么命令可以为每个用户批量将 homedir 的所有内容向上移动一个目录?
谢谢您的帮助。
好的,所以我在 /var/www/forum/newrelease 我想做的是将 newrelease 中的所有文件复制到目录论坛,所以我认为命令 mv /* ../* 会起作用,但现在一切都过去了。任何想法如何取回文件?
更新
因此,文件似乎已移至 /root 目录,但我不确定如何将它们全部取回。
我有一些文件和文件夹都是大写的,我想将它们重命名为对应的小写字母。在 Linux 系统上用 bash 执行此操作的最佳方法是什么?
作为一个例子,我可能有:
.
|-- FOLDER0
| |-- SUBFOLDERA
| `-- SUBFOLDERB
`-- FOLDER1
`-- AFILE.TXT
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
.
|-- folder0
| |-- subfoldera
| `-- subfolderb
`-- folder1
`-- afile.txt
Run Code Online (Sandbox Code Playgroud)
我可能可以编写一个深度优先递归脚本来执行此操作(深度优先以确保文件和子文件夹在其父文件夹之前重命名),但我想知道是否有更好的方法。rename
可能有用,但它似乎不支持递归。
如何使用这样的模式重命名所有文件:
thumb_f318d8a580ca5717d686a323b6c2ca0d.jpg0000777
thumb_f18d8aup90ca5717d686a323b6c2c5uh.jpg0000777
thumb_jessr8d8a580ca5717d68623etrtckks.jpg0000777
thumb_4hghd8a580ca5717d686a323b6c2ghjj.jpg0000777
....
Run Code Online (Sandbox Code Playgroud)
到
thumb_f318d8a580ca5717d686a323b6c2ca0d.jpg
thumb_f18d8aup90ca5717d686a323b6c2c5uh.jpg
thumb_jer8d8a580ca5717d686a323etrtckks.jpg
thumb_4hghd8a580ca5717d686a323b6c2ghjj.jpg
....
Run Code Online (Sandbox Code Playgroud)