linux - 使用 Bash,如何在不使用 'ln -s' 的情况下将文件列表输入 'find' ?

标签 linux bash find ln

我想为“myfiles”中尚未链接到的所有文件创建符号链接(symbolic link),并为刚刚创建的符号链接(symbolic link)指定目标文件夹。

我正在使用以下 cmd 成功地生成现有链接的列表,这些链接指向“我的文件夹”:

find ~/my-existing-links/ -lname '*/myfiles/*' -printf "%f\n" > results.txt

我正在使用以下 cmd 进行反向匹配,即列出 myfiles 中未链接到的文件:

ls ~/myfiles | grep -vf results.txt > results2.txt

因此,results2.txt 有一个文件列表,我现在想为每个文件创建一个新的符号链接(symbolic link)到......在一个名为 ~/newlinks 的文件夹中。

我知道可以使用 find/exec 组合为 'ln -s' 提供文件列表,即

find ~/myfiles/ -exec ln -s {} -t ~/newlinks \; -print

.... 但那将是 myfiles 中未过滤的文件列表。我想使用过滤后的列表。

有什么办法可以做到这一点吗?我将定期向 myfiles 添加文件,因此会定期访问该文件夹,以便为所有新文件生成符号链接(symbolic link),这样我就可以逻辑地划分链接(而不是更改原始文件名)。

最佳答案

尝试使用 xargs:

cat results2.txt | xargs -I{} ln -s {} ~/newlinks

关于linux - 使用 Bash,如何在不使用 'ln -s' 的情况下将文件列表输入 'find' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696335/

相关文章:

linux - 这个 ksh 代码是如何工作的?

python - 从子进程(python,linux)记录数据

bash - 在Shell脚本中执行时Docker Kill无法正常工作

python - 适用于 Linux 的 Windows 子系统 - conda : command not found

linux - 查找路径不包含单词的文件

unix - mtime +0 和 mtime 0 之间的区别

linux - Bash - 从文件中读取行时打印第一列和第二列

linux - 禁止在 x86/x86_64 上进行未对齐的内存访问

linux - 在 bash 脚本中扩展变量以在单引号中传递其值

directory - dokku - 我的应用程序目录在哪里