无法将文件移动到其自身的子目录

Noosrep

我在重命名文件夹中的一堆文件时遇到了一些问题。剧本:

for file in $1 
do
    mv $file $file | sed -r 's/^.{20}//' | sed 's/.\{16\}$//'
done

输出:

mv: cannot move `/home/timothy/Videos/DB/' to a subdirectory of itself, `/home/timothy/Videos/DB/DB'

SED命令是正确的,只是我在使用mv参数做错了什么。

这些是前5个文件的名称:

[a-s]_dragon_ball_-_001_-_the_secret_of_the_dragon_balls__rs2_[4FC1375C]
[a-s]_dragon_ball_-_002_-_the_emperors_quest__rs2_[59F9C743]
[a-s]_dragon_ball_-_003_-_the_nimbus_cloud_of_roshi__rs2_[0C592F5F]
[a-s]_dragon_ball_-_004_-_oolong_the_terrible__rs2_[47CE4923]
[a-s]_dragon_ball_-_005_-_yamcha_the_desert_bandit__rs2_[B6A035BF]

它应该变成这样:

001_-_the_secret_of_the_dragon_balls
002_-_the_emperors_quest
003_-_the_nimbus_cloud_of_roshi
004_-_oolong_the_terrible
005_-_yamcha_the_desert_bandit
苏拉夫角

我假设您有类似的文件,

[a-s]_dragon_ball_-_001_-_the_secret_of_the_dragon_balls__rs2_[4FC1375C]
[a-s]_dragon_ball_-_002_-_the_emperors_quest__rs2_[59F9C743]
[a-s]_dragon_ball_-_003_-_the_nimbus_cloud_of_roshi__rs2_[0C592F5F]
[a-s]_dragon_ball_-_004_-_oolong_the_terrible__rs2_[47CE4923]
[a-s]_dragon_ball_-_005_-_yamcha_the_desert_bandit__rs2_[B6A035BF]

这些文件的开头为[as]。然后您希望将它们重命名为,(根据您的评论)

001_-_the_secret_of_the_dragon_balls
002_-_the_emperors_quest
003_-_the_nimbus_cloud_of_roshi
004_-_oolong_the_terrible
005_-_yamcha_the_desert_bandit

在下面使用此脚本,

#!/bin/bash
for file in [\[a\-s\]]*
do
    newfile=`echo "$file" | sed -r "s/^.{20}//" | awk -F "__rs2" '{print $1}'`
    mv $file $newfile
done

它是如何工作的

该脚本扫描以“ [as]”开头的当前目录中的所有文件名。接下来,对于每个扫描的文件名,for循环内的脚本将创建新文件名,并保留前20个字符,sed并以字符串“ __rs2”开头。这样就删除了名称中不需要的部分。最后,将文件一一重命名为新文件名。

用法

将代码另存为rename_file.sh。(说)接下来,将其放在所有这些文件所在的目录中。授予脚本执行权限。在终端上写

chmod +x rename_file.sh

最后要重命名文件,只需在终端中写入,

./rename_file.sh

完毕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用mv重命名文件:“无法移动到其自身的子目录”

将所有子子目录的内容仅移动到其子目录中

将.txt文件移动到子目录中

如何将某些文件移动到子目录?

将多个文件移动到Linux中的子目录

将目录移动或复制到其自身的子目录

无法MV到其自身的子目录

将文件从几个子目录移动到主目录

Bash / Shell将所有文件从子目录移动到目标目录?

使用Java将文件从父目录移动到子目录

将子目录中的文件移动到另一个目录

如何将子目录中的所有文件递归移动到单个目录?

在重命名后将子子目录文件移动到父目录的Shell脚本

如何使用命令将文件从父目录移动到子目录?

批量将文件移动到子目录(父目录除外)中

将所有文件和目录移动到Windows中的新子目录

将所有文件从子目录移动到父目录

将包含文件的目录排序并移动到子目录中

将具有特定扩展名的文件从目录移动到 PHP 中的子目录

将所有文件移动到文件名开头的子目录中

将所有文件移动到以部分文件名命名的子目录中

如何按计数将文件移动到子目录中?

以编程方式将文件移动到子目录(不使用unix mv命令)

将文件移动到外部硬盘驱动器子目录

如何将CefSharp依赖项和文件移动到子目录?

将文件移动到按字母顺序分类的子目录

将已跟踪和未跟踪的文件都移动到子目录

将文件移动到子目录时,os.rename路径错误

如何将 SQLite 库文件移动到 .NET 项目输出中的子目录?