想象我有一个像下面防止回声
a/b/c_d.e
a/b/d.f
我想裂伤的文件名,这样的路径分隔符成为_
文件夹/文件结构和文件夹之间文件是一个-
,然后这是前缀到文件夹位置。
a/b/a_b-c_d.e
a/b/a_b-d.f
我到目前为止有:
find . -type f -name *.c -exec sh -c "echo -n { {} | xargs dirname }; echo -n "/"; realpath --relative-to="$PWD" "{}" | tr '/' '_'" \;
将输出
./src/ucd-tools/src /src_ucd-tools_src_proplist.c
看来第一echo -n
是添加新的林es,但如果我手动运行echo -n "Hello"
它按预期工作,没有新行。
您正在运行'sh',不'bash'和'-n'只是另一个字符串与POSIX'回声打印',而不是一面旗帜。改用'printf'/''。 – chepner