Zsh: prepend $ (<list.txt) argumenty z katalogiem

0

Używam cp $(<list.txt) new_folderdo skopiowania listy plików (nazw plików w list.txt) do nowego folderu. Pliki muszą znajdować się w tym samym folderze co list.txt.

Czy istnieje prosty sposób, aby to działało, jeśli rzeczywiste pliki znajdują się w osobnym katalogu list.txt? Może wstawić każdą nazwę pliku ze ścieżką?

Meltemi
źródło

Odpowiedzi:

1

$(<list.txt)używa substytucji procesu, dzięki czemu możesz wrzucić dowolne polecenie między nawiasy, aby przeżuć zawartość do treści list.txttwojego serca.

Coś jak cp $(sed -e 's/^/path\/goes\/here\//' list.txt) new_folderpowinno załatwić sprawę.

Haegin
źródło
Dzięki! Próba cp $(sed -e 's/^source_dir\//' list.txt) target_diruzyskania błędu „nieskalowanego nowego wiersza wewnątrz wzorca podstawiania”. FYI - list.txtznajduje się w katalogu nadrzędnym zarówno source_diri target_dir.
Meltemi
Jeśli jest to jedyna rzecz, którą zamierzasz zrobić, po prostu przenieś list.txt do katalogu source_dir i dodaję ../ na początku wzoru zastępczego. Brzmi łatwiej niż walka z sedem. Zakładam, że nie masz dosłownie nowego wiersza wzoru zastępowania dla sed?
Haegin