查找并重命名目录



我正在尝试查找并重命名Linux系统上的目录。

文件夹名称类似于:thefoldername-23423-431321

thefoldername是一致的,但数字每次都会变化。

我试过这个:

find . -type d -name 'thefoldername*' -exec mv {} newfoldername ;

该命令实际上有效并重命名该目录。但是我在终端上收到一个错误,说没有这样的文件或目录。

我该如何解决它?

这是一个无害的错误,您可以使用-depth选项将其删除。

find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername ;

Find 的正常行为是处理目录,然后递归到其中。由于您已重命名,因此当它尝试递归时会发现抱怨。-depth选项告诉 find 先递归,然后再处理目录。

它缺少-execdir选项!如查找手册页中所述:

-execdir command {};

-exec一样,但指定的命令是从包含匹配文件的子目录运行的,该子目录通常不是您开始查找的目录。

find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername ;

使用上一个答案,我的文件夹内容消失了。
这是我的解决方案。效果很好: for i infind -type d -name 'oldFolderName'; 做 目录名称=$(目录名称"$i") mv $dirname/oldFolderName $dirname/newFolderName 做

.../ABC -> .../BCD

find . -depth -type d -name 'ABC' -execdir mv {} $(dirname $i)/BCD ;

将 1100 替换为 old_value,将 2200 替换为要替换的new_value。

for i in $(find . -type d -iname '1100');do echo "mv "$i" "$i"__" >> test.txt; sed 's/1100__/2200/g' test.txt > test_1.txt; bash test_1.txt ; rm test*.txt ; done

证明

[user@server测试]$ ls -la check/

drwxr-xr-x. 1 用户用户 0 6月 7 12:16 1100

[user@server测试]$for i in $(find . -type d -iname '1100');do echo "mv "$i" "$i"__" >> test.txt; sed 's/1100__/2200/g' test.txt > test_1.txt; bash test_1.txt ; rm test*.txt ; done

[user@server测试]$ ls -la check/

drwxr-xr-x. 1 用户用户 0 6月 7 12:16 2200

这里 __ 在 sed 中仅用于更改名称,它没有其他意义

相关内容

  • 没有找到相关文章

最新更新