【发布时间】:2011-08-01 01:41:52
【问题描述】:
我在一个文件夹、子文件夹中有一堆文件,我正在尝试制作某种单行文件,以便偶尔快速复制/粘贴。
内容为(太长无法粘贴):http://pastebin.com/4aZCPbwT
我尝试了以下命令:
列出所有文件及其目录
find . -name '[!.]*'
将“命名空间”的所有实例替换为“测试:
find . -name '[!.]*' -print0 | sed 's/Namespace/Test/gI' | xargs -i -0 echo '{}'
我需要做的是:
替换上面的文件夹名称,并将文件夹(包括文件)复制到另一个位置。如果文件夹不存在(它们很可能不会),请创建文件夹 - 但是,我不需要其中一些文件夹,例如 ./app,因为此文件夹存在。我可以为此使用 -wholename './app'。
当它们被复制时,我需要替换每个文件中的一些文本,与上面相同(带有测试的命名空间 - 当然也出现在文件中并保存它们)。
我会想象这样的事情:
-print -exec sed -i 's/Namespace/Test/gI' {} \;
这三件事可以一次性完成吗?替换文件中的文本(命名空间 测试),用 cp -p 复制文件,包括它们的目录(不想覆盖文件夹),但用上面的方法重命名每个目录/文件(命名空间 测试)。
非常感谢:-)
【问题讨论】:
-
为什么要浪费时间想出一个班轮......我只会写一个简单的带有
for循环的bash脚本,甚至更好的是python脚本。这也可以在python交互式 shell 中很好地完成。 -
嗯,好点。似乎将某些内容复制/粘贴到我的终端会更容易:-)。我的 Bash 技能不是那么强,所以我可能无法编写完整的脚本。我只能做小的随机命令。
-
你发布的命令表明你有一些技巧:)
-
为什么谢谢你......你说得真好:-)。我想我可以再谷歌一下,还不如自己学着做。