搜索并替换文件和文件夹名称

Aji*_*ya 1 linux shell terminal

我有以下文件结构:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_sample.txt\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 demo_test\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data.php\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index_test.php\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Test.php\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想用“演示”替换“测试”。最终的文件结构将是

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 demo_sample.txt\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 demo_demo\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data.php\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index_demo.php\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Test.php\n
Run Code Online (Sandbox Code Playgroud)\n\n

我如何通过 shell 脚本实现这一点。

\n\n

提前致谢。

\n

ner*_*ric 5

您需要分两个阶段进行:

  1. 重命名目录
  2. 重命名文件


cd yourDir
find . -type d -name "*test*" | while read f; do mv $f $(echo $f | sed 's/test/demo/'); done
find . -type f -name "*test*" | while read f; do mv $f $(echo $f | sed 's/test/demo/'); done
Run Code Online (Sandbox Code Playgroud)

查找列出与“test”匹配的所有文件和目录,然后我们逐行处理命令行的输出