Prepend line that contains {} in files recursively using find and sed
I want to prepend recursively all files ending with .ts
with this text: export {};
and I need to exclude at least the folder node_modules
.
I tried:
find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 iexport {}' ;
Result: for each file I get: sed: 1: "1 iexport ./src/query/ ...": extra characters after at the end of i command
Update:
I installed gnu-sed
on macOS and tried using gsed
as well. But it doesn't seem to work - it seems to run infinitely.
sed files find
add a comment |
I want to prepend recursively all files ending with .ts
with this text: export {};
and I need to exclude at least the folder node_modules
.
I tried:
find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 iexport {}' ;
Result: for each file I get: sed: 1: "1 iexport ./src/query/ ...": extra characters after at the end of i command
Update:
I installed gnu-sed
on macOS and tried using gsed
as well. But it doesn't seem to work - it seems to run infinitely.
sed files find
add a comment |
I want to prepend recursively all files ending with .ts
with this text: export {};
and I need to exclude at least the folder node_modules
.
I tried:
find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 iexport {}' ;
Result: for each file I get: sed: 1: "1 iexport ./src/query/ ...": extra characters after at the end of i command
Update:
I installed gnu-sed
on macOS and tried using gsed
as well. But it doesn't seem to work - it seems to run infinitely.
sed files find
I want to prepend recursively all files ending with .ts
with this text: export {};
and I need to exclude at least the folder node_modules
.
I tried:
find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 iexport {}' ;
Result: for each file I get: sed: 1: "1 iexport ./src/query/ ...": extra characters after at the end of i command
Update:
I installed gnu-sed
on macOS and tried using gsed
as well. But it doesn't seem to work - it seems to run infinitely.
sed files find
sed files find
edited Jan 13 at 20:16
Alexander Zeitler
asked Jan 13 at 19:54
Alexander ZeitlerAlexander Zeitler
1206
1206
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Due to:
The string
'{}'
is replaced by the current file name being
processed
everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.
Both of these constructions might need to be escaped (with a) or quoted to protect them from expansion by the
shell.
Use the following approach:
find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 iexport{}' {} ;
-i
, --in-place
- sed
option for editing files in place
When usinggsed
instead ofsed
(because of macOS) it did work, thanks.
– Alexander Zeitler
Jan 13 at 20:32
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f494294%2fprepend-line-that-contains-in-files-recursively-using-find-and-sed%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Due to:
The string
'{}'
is replaced by the current file name being
processed
everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.
Both of these constructions might need to be escaped (with a) or quoted to protect them from expansion by the
shell.
Use the following approach:
find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 iexport{}' {} ;
-i
, --in-place
- sed
option for editing files in place
When usinggsed
instead ofsed
(because of macOS) it did work, thanks.
– Alexander Zeitler
Jan 13 at 20:32
add a comment |
Due to:
The string
'{}'
is replaced by the current file name being
processed
everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.
Both of these constructions might need to be escaped (with a) or quoted to protect them from expansion by the
shell.
Use the following approach:
find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 iexport{}' {} ;
-i
, --in-place
- sed
option for editing files in place
When usinggsed
instead ofsed
(because of macOS) it did work, thanks.
– Alexander Zeitler
Jan 13 at 20:32
add a comment |
Due to:
The string
'{}'
is replaced by the current file name being
processed
everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.
Both of these constructions might need to be escaped (with a) or quoted to protect them from expansion by the
shell.
Use the following approach:
find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 iexport{}' {} ;
-i
, --in-place
- sed
option for editing files in place
Due to:
The string
'{}'
is replaced by the current file name being
processed
everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.
Both of these constructions might need to be escaped (with a) or quoted to protect them from expansion by the
shell.
Use the following approach:
find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 iexport{}' {} ;
-i
, --in-place
- sed
option for editing files in place
edited Jan 13 at 20:22
answered Jan 13 at 20:16


RomanPerekhrestRomanPerekhrest
23k12447
23k12447
When usinggsed
instead ofsed
(because of macOS) it did work, thanks.
– Alexander Zeitler
Jan 13 at 20:32
add a comment |
When usinggsed
instead ofsed
(because of macOS) it did work, thanks.
– Alexander Zeitler
Jan 13 at 20:32
When using
gsed
instead of sed
(because of macOS) it did work, thanks.– Alexander Zeitler
Jan 13 at 20:32
When using
gsed
instead of sed
(because of macOS) it did work, thanks.– Alexander Zeitler
Jan 13 at 20:32
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f494294%2fprepend-line-that-contains-in-files-recursively-using-find-and-sed%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown